Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   вопрос безопасности (https://javascript.ru/forum/server/13798-vopros-bezopasnosti.html)

HelpeR 14.12.2010 10:00

вопрос безопасности
 
Здравствуйте!
Делаю добавление комментарий как тут. Т.е. комментарий добавляется с помощью ajax и POST и в нем могут присутствовать html js php css коды.
Вопрос безопасности!
при добавлении текста в базу я его провожу через htmlspecialchars и загоняю с mysql_real_escape_string. Как вы думаете достаточно ли этого для того, что быть уверенным, что текст коммента не смогут использовать в целях взлома?

Kolyaj 14.12.2010 10:29

Цитата:

Сообщение от HelpeR
Вопрос безопасности!

А чем, с точки зрения безопасности, добавление комментария ajax-ом отличается от отправки обычной формы?

HelpeR 14.12.2010 10:32

Цитата:

Сообщение от Kolyaj (Сообщение 83765)
А чем, с точки зрения безопасности, добавление комментария ajax-ом отличается от отправки обычной формы?

Это не имеет значения. Для более подробной информации я подчеркнул, что коммент добавляется ajax. А главный вопрос состоит в том, что достаточно ли использовать htmlspecialchars и mysql_real_escape_string для добавления текста комментария в базу?

Kolyaj 14.12.2010 10:41

Тут два момента.

Первый: сохранение комментария. Если комментарии хранятся в реляционной базе, то надо защититься от SQL-инъекции. Для этого нужен mysql_real_escape_string, а лучше механизм placeholder-ов. htmlspecialchars на этом этапе не нужен, иначе будет уже не тот коммент, который добавлялся. Если комментарии хранятся в файлах, то там уже возможно заморочки с разделителями записей могут быть. Если в какой-нибудь объектно-ориентированной базе, вроде mongodb, то проблем вообще никаких нет. Комментарий сохраняется как есть.

Второй момент: вывод комментария на страницу. Т.к. комментарий выводится в HTML, то все символы, специфичные для HTML нужно экранировать. Вот на этом этапе нужен htmlspecialchars.
Если бы комментарий выводился в другом формате, json например, то htmlspecialchars, вобщем-то, не нужен.

Вобщем главное понять, для чего делается то или иное действие.

HelpeR 14.12.2010 10:51

Данные хранятся в реляционной базе! Если я понял mysql_real_escape_string спасает от SQL injections?
Не подскажите, что за механизм placehoder?

Kolyaj 14.12.2010 11:03

http://www.google.com/search?q=PDO+p...ient=firefo x

HelpeR 14.12.2010 11:43

спасибо понял!


Часовой пояс GMT +3, время: 17:05.