SQL-инъекция и экранирование специальных символов - PullRequest
2 голосов
/ 15 октября 2011

Я принимаю данные от TinyMCE.Я сталкиваюсь с трудностями, когда копирую и вставляю с сайта, такого как этот:

http://www.rlslog.net/category/games/pc/

Я использую следующие функции для предотвращения внедрения SQL и экранирования специальных символов, которые, если испортят всю мою страницу, как только я выведу вставленныйtext.

$title = mysql_real_escape_string($title);
$data = mysql_real_escape_string($data);
$author= mysql_real_escape_string($author);

$data =htmlentities($data);
$title =htmlentities($title);   
$author =htmlentities($author); 

mysql_query("SET NAMES 'utf8'");

mysql_query("INSERT INTO `easy_db`.`article` (`Title`,  `Article`, `Topics`, `author`, `page`, tpage ) VALUES('$title', '$data', '$topic', '$author', '$page','$tpage')")  or die(mysql_error());
mysql_close();

Когда я вывожу данные, я получаю текст html (который не является выводом из базы данных), который выглядит следующим образом:

כותרת היו×

Я отключаю magic_quotes_gpc вмой php.ini

magic_quotes_gpc
Default Value: Off
Development Value: Off
Production Value: Off

Вот как выглядит текст, который я помещаю, ссылаясь на него в phpmyadmin:

skidrow%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=35\" frameborder=\"0\" scrolling=\"no\"></iframe></p>\r\n<p class=\"comments_link\" style=\"padding-top: 20px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; line-height: 19px; margin: 0px;\"><a style=\"color:

c02e13; text-decoration: none; padding: 0px; margin: 0px;\" title=\"Comment on Orcs Must Die Fix-SKIDROW\"
href=\"http://www.rlslog.net/orcs-must-die-fix-skidrow/#respond\">Comments(0)</a></p>\r\n</div>\r\n</div>\r\n<div style=\"padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 40px; margin: 0px;\"><iframe style=\"padding: 0px; margin: 0px;\" src=\"http://www.roadcomponentsdb.com/300.htm\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"NO\" width=\"300\" height=\"250\"></iframe></div>\r\n<p id=\"nextlinks\" style=\"padding-top: 20px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; margin: 0px;\"><strong style=\"padding: 0px; margin: 0px;\">Previous post:</strong>&nbsp;<a style=\"color: #c02e13; text-decoration: none; padding: 0px; margin: 0px;\" href=\"http://www.rlslog.net/musclemag-international-%e2%80%93-december-2011-p2p/\">MuscleMag International &ndash; December 2011-P2P</a></p>

Вопрос в том, почему это происходит?как мне это предотвратить?и я делаю достаточно, чтобы предотвратить инъекцию SQL?

1 Ответ

2 голосов
/ 15 октября 2011

SET NAMES 'utf8' изменяет ваши данные.

Взгляните на ссылку на этот форум MySQL .Он дает довольно хорошее описание того, что происходит.Краткое описание: процесс преобразования запутан относительно того, как следует читать символы.

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