Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Безопасность в PHP (http://forum.oszone.net/showthread.php?t=31332)

chem1 13-02-2004 11:31 214711

Вопрос в следующем, как защититься от добавления пользователем в форму спец. символов, например
Код:

",',<,>
и т.д.
А то можно бед наделать вот например что-то вроде
Код:

'; drop table table;
Как с этим бороться. Есть идея просто заменять опасные символы:
Код:

$a = ereg_replace("<","<",$a);
$a = ereg_replace(">",">",$a);

Но как представлю сколько у меня переменных аж плохо становится, да и как поступать с кавычками ведь $a = ereg_replace(""","/'",$a); боюсь не прокатит.


Blast 13-02-2004 11:40 214712

knife
а если так?:
Код:


if ( ereg ( "[<>&]+", $GLOBALS["form"]["имя формы"], $error_1 ) )
 * *{
 * * * *$error[0] .= $html.'( <FONT COLOR=какой-то>'.htmlspecialchars($error_1[0]).'</FONT> )<BR>';
 * * * *$error[1] = 1;
 * *}
 
return $error;

ну и предварительно описать эти эроры...

Prisoner 13-02-2004 17:24 214713

Бороться с кавычками поможет функция addslashes (Возвращает строку со слэшами перед символами, которые должны быть закавычены в запросах БД и т.п.. Это одинарная ('), и двойная (") кавычки, обратный слэш/backslash (\)и NUL (NULL-байт)) и ее аналог addсslashes (тут стоит почитать мануалы, там фишки свои).
можно проверять тип приходящих данных - is_тип или насильно устанавливать тип - settype.
Можно создать ассоциативный массив в виде опасный_символ(ы)=>безопасный_символ(ы) и в цикле пройтись по данным функцией str_replace.
Ну и конечно регулярные выражения как на проверку так и на конвертирование.

Все вышеперечисленное не претендует на панацею :).

chem1 17-02-2004 10:07 214714

Prisoner
Да, слышал об этих функциях, но к сожалению они не заменяют знаки html разметки, а это мне тоже необходимо.

Blast
А что так сложно, но за подсказку ф-ии htmlspecialchars() спасибо. Почитал о ней, оказалось с параметром ENT_QUOTES заменяет все кавычки, а также < & и >.  Вопрос в следующем, достаточно ли замены этих спец. символов чтобы себя обезопасить?

Prisoner 17-02-2004 22:23 214715

Цитата:

Цитата knife
знаки html разметки

А что подразумевается под этим термином?
Цитата:

Цитата knife
достаточно ли замены этих спец. символов чтобы себя обезопасить?

Нет :). Стопроцентной защиты никогда не будет. Стоит фильровать также точку с запятой, а строковые данные sql запросов при инсертах и прочем заключать в кавычки.  Также стоит ловить символ "#" - комментарий в sql дабы не получить по носу когда будет выполнена лишь ЧАСТЬ запроса. В общем стоит почитать (мне тоже - забыл все :() синтаксис команд sql и поглядеть на камни под водой :).


Время: 22:29.

Время: 22:29.
© OSzone.net 2001-