Как обезопасить $ _POST от php без кавычек и прочего - PullRequest
2 голосов
/ 14 августа 2011

У меня есть редактор tinyMCE, который передает данные в файл обработки php.

Если я использую $variable=$_POST(['tinyMCE_textarea']);, то все в порядке.Но я хочу защитить его, чтобы ничего плохого не получилось от пользователя, который ввел некоторые данные в textarea.

И когда я использую $variable=mysql_real_escape_string($_POST(['tinyMCE_textarea'])); Результат становится поврежденным с некоторыми \" знаками.Так как же я могу добавить максимальную безопасность, не меняя переменную?

Ответы [ 4 ]

4 голосов
/ 14 августа 2011

TinyMCE может очищать данные, однако очень важно, чтобы вы не полагались на клиентские вещи.

Чтобы защитить данные для базы данных, вы используете mysql_real_escape_string(). Результат предназначен для использования с MySQL, а не для отображения.

Чтобы защитить данные для отображения, вы используете функцию htmlspecialchars(). htmlentities () также работает, но конвертирует все применимые объекты, поэтому для безопасности вам нужен только htmlspecialchars ().

Таким образом, упрощенная картина

.// Insert to database
mysql_query("INSERT INTO data (content) VALUES ('" . mysql_real_escape_string( $_POST['tinyMCE_textarea'] ) . "')");

.// Display to user - doesn't matter whether the data is from post or database
echo htmlspecialchars ( $_POST['tinyMCE_textarea'] );
1 голос
/ 14 августа 2011

используйте подготовленное заявление или PDO.
используйте htmlentities () или скрытые по крайней мере '<' и '<' '"' для" & gt; "и т. д. </p>

0 голосов
/ 14 августа 2011

Используйте привязку параметров SQL, и вы защищены от любого внедрения.

0 голосов
/ 14 августа 2011

Просто не забудьте экранировать пользовательский ввод перед выводом (используя, например, htmlentities()) и экранировать строку перед ее сохранением в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...