Безопасная форма
Где-то видел, может даже на этом форуме:
как сделать безопасную форму, данные которой ложаться в базу, потом скриптом достаются на страницу. Ведь можно помимо "Привет Вася" дописать и PHP-скрипт, который ессно потом выполнится...
Надеюсь понятно изложил :)
Спасибо!
Hi All!
Где-то видел, может даже на этом форуме:
как сделать безопасную форму, данные которой ложаться в базу, потом скриптом достаются на страницу. Ведь можно помимо "Привет Вася" дописать и PHP-скрипт, который ессно потом выполнится...
Надеюсь понятно изложил :)
Спасибо!
Если ты видел где-то поищи сам, а не проси других. Способ прост и сложен одновременно - достаточно точно знать, что ты хочешь получить от пользователя и не пропускать все остальное. Вот.
Если ты видел где-то поищи сам, а не проси других. Способ прост и сложен одновременно - достаточно точно знать, что ты хочешь получить от пользователя и не пропускать все остальное. Вот.
Сам-то я уже искал. Искать кого-то - не прошу. А фишка заключалась в использовании какой-то пары html-тэгов.
Сам-то я уже искал. Искать кого-то - не прошу. А фишка заключалась в использовании какой-то пары html-тэгов.
А можно подробнее узнать, что ты хочешь?! А то по таким описаниям ничего не понятно. То ли ты хочешь защититься от PHP- и SQL-инъекций, то ли просто форму создать.
А можно подробнее узнать, что ты хочешь?! А то по таким описаниям ничего не понятно. То ли ты хочешь защититься от PHP- и SQL-инъекций, то ли просто форму создать.
Угу - защититься от инъекций :)
Т.е. текст, вводимый пользователем, нужно "обезопасить" от таких вот зловредных примесей...
то есть данные с формы получать будем так: (пример)
$var1=htmlspecialchars(mysql_escape_string($_POST['var1']));
//для MySQL
$var2=htmlspecialchars(pg_escape_string($_POST['var2']));
//для PostgreSQL
Почему же для разных БД функции разные?! Все дело в том, что в MySQL используется мягко говоря далеко не стандарт языка SQL и поэтому некоторые служебные символы отличаются. За подробностями как обычно на php.net
все очень просто: для защиты от всяких РНР и JS инъекций достаточно обработать полученные данные с формы функцией htmlspecialchars(). Чтобы исключить SQL инъекции необходимо применить функции mysql_escape_string() для MySQL или pg_escape_string() для PostgreSQL
То, что надо! Большое спасибо!!! :)
Кстати, не подскажешь, как узнать IP пользователя, отправляющего данные с формы?
То, что надо! Большое спасибо!!! :)
Кстати, если точно известен тип данных с формы (например номер страницы приразбивке форумов или гостевух на страницы) полезно применять еще функцию приведения этого значения к соотв. типу данных. Например написали гостевуху и обращение к странице номер 19 происходит так: guestbook.php?page=19
В скрипте получаем значение переменной:
$page=(int)$_GET['page'];
if($page<1) $page=1;
Таким образом, если будет попытка передать через эту переменную передать что-то отличное от положительного целого числа - скрипт будет перекидывать на первую страницу гостевухи. Это возможно применять только в том случае, когда точно известно какого именно типа данные должны прийти в переменную.
Кстати, если точно известен тип данных с формы (например номер страницы приразбивке форумов или гостевух на страницы) полезно применять еще функцию приведения этого значения к соотв. типу данных. Например написали гостевуху и обращение к странице номер 19 происходит так: guestbook.php?page=19
В скрипте получаем значение переменной:
$page=(int)$_GET['page'];
if($page<1) $page=1;
Таким образом, если будет попытка передать через эту переменную передать что-то отличное от положительного целого числа - скрипт будет перекидывать на первую страницу гостевухи. Это возможно применять только в том случае, когда точно известно какого именно типа данные должны прийти в переменную.
Ясно. 10х!