Показать сообщение отдельно

  #108  
Старый 30.04.2011, 09:23
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
С нами: 8417113

Репутация: 0
По умолчанию

Цитата:
Сообщение от nc.STRIEM  
а не прощи ли сделать
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"\'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]);

[/
COLOR][/COLOR
Никогда не подумаю что в МОА такие люди. Этот код не защищаеть от SQL-inj.

Представим что в эту функцию:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"\'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]);

[/
COLOR][/COLOR
Мы передадим строку:

Код:
\'
Тогда что получиться? Кавычка экранируется и получается вот это:

Код:
\\'
Тут мы видим что кавычка не за экранирована, поскольку \ стоящая перед ней экранирует \ стоящую после кавычки. Разумееться тут возникнут небольшие сложности, но SQL-inj остаёться возможно провести.

И всё же посоветую конвертировать в htmlspecialchars до помещения в БД.
 
Ответить с цитированием