restore #1061 14 мая 2013 Ребят, есть задание: написать программу. Суть её заключается в том, чтобы автоматически, по нажатию одной кнопки кликать на определенном сайте на определенные ссылку, вводить числа, и.т.п. Плюс делать эти же операции в одной сторонней программе. Так толком не объяснить, кто реально шарит - будьте добры в ЛС. О цене договоримся без проблем. Поделиться сообщением Ссылка на сообщение
TycoooN #1062 14 мая 2013 Перед какой записью? Экранировать надо при выводе, иначе всегда есть шанс получить уязвимость на ровном месте Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #1063 14 мая 2013 Ребят, есть задание: написать программу. Суть её заключается в том, чтобы автоматически, по нажатию одной кнопки кликать на определенном сайте на определенные ссылку, вводить числа, и.т.п. Плюс делать эти же операции в одной сторонней программе. Так толком не объяснить, кто реально шарит - будьте добры в ЛС. О цене договоримся без проблем.зачем для этого программа нужна? лол вон пацаны тебе на рельсах напишут (за страпон), или диман на жаве (за много кккк баксов), или кант на ассемблере (за картошку), или рабишь скажет что ты хуевый (за просто так, он добрый), или тинплз на с++ напишет не рабочий код (тоже картошку как не странно) Перед какой записью? Экранировать надо при выводе, иначе всегда есть шанс получить уязвимость на ровном месте в базу, конечно, тогда не будет уязвимости, да и xss это не уязвимость! Поделиться сообщением Ссылка на сообщение
TycoooN #1064 14 мая 2013 Я понял, что в базу. Но это хуёвый какой-то подход, юзерские данные лучше оставлять как есть, а экранировать всё при выводе. Поделиться сообщением Ссылка на сообщение
justice_st #1065 14 мая 2013 (изменено) 11 строка, на mysql_query ( $query ) or exit( mysql_error() );чо выдает? скорее всего ты хуево коннекнутлся к бд, если ваще это сделалхз как проверить что она выдает, загуглил mysql_query debug, сделал так:<?phpinclude 'functions.php';include 'global.php'; $query = "SELECT * FROM `user`";$result = mysql_query ( $query ) or exit( __FILE__." (".__LINE__.") ".$query );if (!$result) { $message = 'Неверный запрос: ' . mysql_error() . "\n"; $message .= 'Запрос целиком: ' . $query; die($message);} print "<ul class='users'>".PHP_EOL; while( $line = mysql_fetch_assoc( $result ) ) { echo echo "<li><a onclick='top.chat.document.forms[0].message.value+=\"{$line[username]}, \"'>{$line[username]}</a></li>";} print "</ul>".PHP_EOL; echo setlocation( "nicklist", 60, $_SERVER['PHP_SELF'] );//60 - second for refreshmysql_free_result( $result );?>теперь там пусто но теперь вот тут 1<?php error_reporting( E_ALL ^ E_NOTICE ); session_start(); session_register( "userid" ); @$action = $_GET['action']; include 'functions.php'; include 'global.php'; global $user; echo "<html><body>"; if( empty( $_SESSION['userid'] ) ) { if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick if( !empty( $_POST['username'] ) ) {//check for existence $query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'"; $r = mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query ); if( mysql_num_rows( $r ) ) {//if exists echo "<center>Уже есть</center>"; } else {//reg $query = "INSERT INTO `user` ( `username`, `lastactivity` ) VALUES ( '".htmlspecialchars( $_POST['username'] )."',".mktime()." )"; mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query ); $_SESSION['userid'] = mysql_insert_id(); echo "<center>Привет, $_POST[username]</center>". setlocation( 'chat', 0, 'input.php' ). setlocation( 'main', 2, 'main.php' ); echo "</body></html>"; $query = "INSERT INTO `chat` VALUES ( $_SESSION[userid], 'я пришел!!!!', '".mktime()."' )"; @mysql_query( $query ); }//if( mysql_num_rows( $r ) ) }//if( !empty( $_POST['username'] ) ) else "<script language=javascript>alert('Введите ник');</script>"; } else { echo "<form method='POST'> <input type='text' name='username' size='30' /> <input type='submit' value='Enter' /> </form> </body></html>"; }//if( 'POST' == $_SERVER['REQUEST_METHOD'] ) exit; }//if( empty( $_SESSION['userid'] ) ) if( "exit" == $action ) { session_destroy(); $query = "INSERT INTO `chat` VALUES ( $user[userid], 'я ушел!!!!', '".mktime()."' )"; @mysql_query( $query ); $query = "DELETE FROM `user` WHERE `userid`='$user[userid]'"; mysql_query( $query ); echo setlocation( 'main', 0, 'main.php' ); exit; }//if( "exit" == $action ) echo "<center>Чат для $user[username] <a href='main.php?action=exit'>выйти</a></center>"; $query = "SELECT * FROM `chat` LEFT JOIN `user` USING (`userid`) ORDER BY `date` DESC"; $result = mysql_query ( $query ) or die ( "Query failed: $query" ); echo "<ul>".PHP_EOL; while( $line = mysql_fetch_assoc( $result ) ) { echo "<li><span class='ts'>".getdatestring( $line['date'] )."</span> <span class='un'>$line[username]:</span> <span class='msg'>$line[message]</span></li>"; }//while print "</ul>".PHP_EOL; mysql_free_result( $result ); $query = "UPDATE `user` SET `lastupdate` = '".mktime()."' WHERE `userid` = $_SESSION[userid] "; @mysql_query( $query ); echo "</body></html>"; ?> создается текстбокс и кнопка Enter. Жму на нее если что-то есть в инпуте - выводится /адрес фтп/логин фтп/адрес сайта/chat/main.php (24) SELECT `userid` FROM `user` WHERE `username` = 'то что ввел в инпуте'Если ничего не ввести и нажать - просто исчезает, никакого алерта нету Опять обернуть $r и проверять if (!$r) ? Изменено 14 мая 2013 пользователем justice_st Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #1066 14 мая 2013 ну сообщения само собой а вот логины можно (и нужно) сперва проверять реуляркой (ибо нехуй спешл чары в логины лепить) а потом уже записывать, или бросать эксепшн/возвращать ошибку ибо каждый раз заебешся все через функцию пропускать. Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1067 14 мая 2013 может я чего-то не понял, но зачем проверять данные при выводе? :hmm: Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #1068 14 мая 2013 замени везде __FILE__." (".__LINE__.") ".$query на mysql_error() @$action = $_GET['action']; не делай так!$action = empty($_GET['action']) ?: $_GET['action']; или$action = empty($_GET['action']) ? 'indexAction' : $_GET['action']; не экранизируй такие вещиecho "<html><body>"; через echo ваще жесткий говнокод Поделиться сообщением Ссылка на сообщение
justice_st #1069 14 мая 2013 if( empty( $_SESSION['userid'] ) ) { if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick if( !empty( $_POST['username'] ) ) {//check for existence $query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'"; $r = mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query ); if (!$r) { $message = 'Неверный запрос: ' . mysql_error() . "\n"; $message .= 'Запрос целиком: ' . $query; die($message); } после клика по пост-форме форма исчезает и появляется текст - фтп адрес/фтп логин/адрес сайта/+сам запрос, дальше ничего не происходит Поделиться сообщением Ссылка на сообщение
SPYHunter #1070 14 мая 2013 11 строка, на mysql_query ( $query ) or exit( mysql_error() );чо выдает? скорее всего ты хуево коннекнутлся к бд, если ваще это сделалхз как проверить что она выдает, загуглил mysql_query debug, сделал так:<?php include 'functions.php'; include 'global.php'; $query = "SELECT * FROM `user`"; $result = mysql_query ( $query ) or exit( __FILE__." (".__LINE__.") ".$query ); if (!$result) { $message = 'Неверный запрос: ' . mysql_error() . "\n"; $message .= 'Запрос целиком: ' . $query; die($message); } print "<ul class='users'>".PHP_EOL; while( $line = mysql_fetch_assoc( $result ) ) { echo echo "<li><a onclick='top.chat.document.forms[0].message.value+=\"{$line[username]}, \"'>{$line[username]}</a></li>"; } print "</ul>".PHP_EOL; echo setlocation( "nicklist", 60, $_SERVER['PHP_SELF'] );//60 - second for refresh mysql_free_result( $result ); ?>теперь там пусто но теперь вот тут 1<?php error_reporting( E_ALL ^ E_NOTICE ); session_start(); session_register( "userid" ); @$action = $_GET['action']; include 'functions.php'; include 'global.php'; global $user; echo "<html><body>"; if( empty( $_SESSION['userid'] ) ) { if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick if( !empty( $_POST['username'] ) ) {//check for existence $query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'"; $r = mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query ); if( mysql_num_rows( $r ) ) {//if exists echo "<center>Уже есть</center>"; } else {//reg $query = "INSERT INTO `user` ( `username`, `lastactivity` ) VALUES ( '".htmlspecialchars( $_POST['username'] )."',".mktime()." )"; mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query ); $_SESSION['userid'] = mysql_insert_id(); echo "<center>Привет, $_POST[username]</center>". setlocation( 'chat', 0, 'input.php' ). setlocation( 'main', 2, 'main.php' ); echo "</body></html>"; $query = "INSERT INTO `chat` VALUES ( $_SESSION[userid], 'я пришел!!!!', '".mktime()."' )"; @mysql_query( $query ); }//if( mysql_num_rows( $r ) ) }//if( !empty( $_POST['username'] ) ) else "<script language=javascript>alert('Введите ник');</script>"; } else { echo "<form method='POST'> <input type='text' name='username' size='30' /> <input type='submit' value='Enter' /> </form> </body></html>"; }//if( 'POST' == $_SERVER['REQUEST_METHOD'] ) exit; }//if( empty( $_SESSION['userid'] ) ) if( "exit" == $action ) { session_destroy(); $query = "INSERT INTO `chat` VALUES ( $user[userid], 'я ушел!!!!', '".mktime()."' )"; @mysql_query( $query ); $query = "DELETE FROM `user` WHERE `userid`='$user[userid]'"; mysql_query( $query ); echo setlocation( 'main', 0, 'main.php' ); exit; }//if( "exit" == $action ) echo "<center>Чат для $user[username] <a href='main.php?action=exit'>выйти</a></center>"; $query = "SELECT * FROM `chat` LEFT JOIN `user` USING (`userid`) ORDER BY `date` DESC"; $result = mysql_query ( $query ) or die ( "Query failed: $query" ); echo "<ul>".PHP_EOL; while( $line = mysql_fetch_assoc( $result ) ) { echo "<li><span class='ts'>".getdatestring( $line['date'] )."</span> <span class='un'>$line[username]:</span> <span class='msg'>$line[message]</span></li>"; }//while print "</ul>".PHP_EOL; mysql_free_result( $result ); $query = "UPDATE `user` SET `lastupdate` = '".mktime()."' WHERE `userid` = $_SESSION[userid] "; @mysql_query( $query ); echo "</body></html>"; ?> создается текстбокс и кнопка Enter. Жму на нее если что-то есть в инпуте - выводится /адрес фтп/логин фтп/адрес сайта/chat/main.php (24) SELECT `userid` FROM `user` WHERE `username` = 'то что ввел в инпуте'Если ничего не ввести и нажать - просто исчезает, никакого алерта нету Опять обернуть $r и проверять if (!$r) ?спасибопожалуйста https://insave.hostinghttps://horhul.me Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #1071 14 мая 2013 'POST' == $_SERVER['REQUEST_METHOD']тоже что и!empty($_POST) if( empty( $_SESSION['userid'] ) ) { if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick if( !empty( $_POST['username'] ) ) {//check for existence $query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'"; $r = mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query ); if (!$r) { $message = 'Неверный запрос: ' . mysql_error() . "\n"; $message .= 'Запрос целиком: ' . $query; die($message); } после клика по пост-форме форма исчезает и появляется текст - фтп адрес/фтп логин/адрес сайта/+сам запрос, дальше ничего не происходитпотому что это выводится __FILE__." (".__LINE__.") ".$query потому что у тебя ошибка в запросе а тебе нужна ошибка поэтому выводи mysql_error() Поделиться сообщением Ссылка на сообщение
justice_st #1072 14 мая 2013 No database selected ebat_ty_loh.jpg Поделиться сообщением Ссылка на сообщение
justice_st #1073 14 мая 2013 (изменено) ппц 4 символа исправил и все заработалоосталось замаскировать говнокод под цссом :tusila-zavodila:Вот C# регулярка @"^[_a-z\d\[\]\(\)\-\.]{2,16}$"как ее конвертнуть для пхп? Изменено 14 мая 2013 пользователем justice_st Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #1074 14 мая 2013 она должна работать и в пхп только @ не надои "/^[_a-z\d\[\]\(\)\-\.]{2,16}$/" / / поставил Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1075 14 мая 2013 (изменено) $query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'"; Можешь прощаться с базой. Изменено 14 мая 2013 пользователем Обязательное_поле Поделиться сообщением Ссылка на сообщение
justice_st #1076 14 мая 2013 поставил в начало $action = empty($_GET['action']) ? 'indexAction' : $_GET['action'];теперь если нажать выход if( "exit" == $action ) { session_destroy(); $query = "INSERT INTO `chat` VALUES ( $user[userid], 'User '+$user[userid]+' left.', '".mktime()."' )"; @mysql_query( $query ); //$query = "DELETE FROM `user` WHERE `userid`='$user[userid]'"; //mysql_query( $query ); echo setlocation( 'main', 0, 'main.php' ); exit;}это все выполняется, а сайт больше не открывается вообще на другом компе то же самое сделал - тоже не открываетсяхотя админка mysql работает, вижу содержимое базы Поделиться сообщением Ссылка на сообщение
Nekon #1077 14 мая 2013 Почитайhttp://habrahabr.ru/post/150267/ И код перед отправкой в бд надо обрамлять mysql_real_escape_string(), например $login = mysql_real_escape_string($_POST['login']);Если у тебя в БД будет вставлять лишнюю хуйню, отключи волшебные ковычки к хуямhttp://php.net/manual/ru/security.magicquotes.disabling.php Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1078 14 мая 2013 Почитайhttp://habrahabr.ru/post/150267/ И код перед отправкой в бд надо обрамлять mysql_real_escape_string(), например $login = mysql_real_escape_string($_POST['login']);Если у тебя в БД будет вставлять лишнюю хуйню, отключи волшебные ковычки к хуямhttp://php.net/manua...s.disabling.phpА вот это уже вредительство, зачем советовать устаревшую практику?Есть же няшный PDO, созданный специально для ебланов, которые не валидируют ввод. Поделиться сообщением Ссылка на сообщение
Fantazio #1079 14 мая 2013 (изменено) О всесильные юзеры пд!! Помогите бедному студенту,который прогуливал все занятия по инфе, и теперь его наградили заданием Написать пример программы содержащие в себя сложенные друг-друга операций(browse,sollution и т.д).Заранее благодарен) Изменено 14 мая 2013 пользователем Fantazio Поделиться сообщением Ссылка на сообщение
justice_st #1080 14 мая 2013 у меня так if( empty( $_SESSION['userid'] ) ) { if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick if( !empty( $_POST['username'] ) ) {//check for existence $user = $_POST['username']; if (preg_match( "/^[_a-z\d\[\]\(\)\-\.]{2,16}$/" ,$user)) { $query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'"; $r = mysql_query( $query ) or exit( mysql_error() ); if (!$r) { $message = 'Неверный запрос: ' . mysql_error() . "\n"; $message .= 'Запрос целиком: ' . $query; die($message); } if( mysql_num_rows( $r ) ) {//if exists echo "<center>Nickname already taken.</center>"; } else {//reg $query = "INSERT INTO `user` ( `username`, `lastactivity` ) VALUES ( '".htmlspecialchars( $_POST['username'] )."',".mktime()." )"; $result = mysql_query( $query ) or exit( mysql_error()); if (!$result) { $message = 'Неверный запрос: ' . mysql_error() . "\n"; $message .= 'Запрос целиком: ' . $query; die($message); } $_SESSION['userid'] = mysql_insert_id(); echo "<center>Привет, $_POST[username]</center>". setlocation( 'chat', 0, 'input.php' ). setlocation( 'main', 2, 'main.php' ); echo "</body></html>"; $query = "INSERT INTO `chat` VALUES ( $_SESSION[userid], 'User '+$_SESSION[userid]+' joined chat.', '".mktime()."' )"; @mysql_query( $query ); }//if( mysql_num_rows( $r ) ) } else "<script language=javascript>alert('Неверный ник');</script>"; }//if( !empty( $_POST['username'] ) ) else "<script language=javascript>alert('Введите ник');</script>"; } все эти алерты не работают (их убрать надо вообще, просто выводить ошибку на несколько секунд), а сама регулярка нормально пашет Поделиться сообщением Ссылка на сообщение