Я создал страницу для создания статей http://8mags.com/bored/people/
Когда я разместил статью с тегами сценариев и другими тегами HTML, она вышла с тегом сценариев, вот ссылка на созданную статью http://8mags.com/bored/people/stories/59b4f0c3a94d5f2637b376be6e554480.php
Это угроза безопасности? Как я могу предотвратить это? Вот код, который я использую
if (!empty($_REQUEST['content'])&&!empty($_REQUEST['title'])&&!empty($_REQUEST['writer'])) {
$title = $_POST['title'];
$content = $_POST['content'];
$writer = $_POST['writer'];
require_once 'htmlpurifier/library/HTMLPurifier.auto.php';
$purifier = new HTMLPurifier();
$pure_content = $purifier->purify($content);
$entity_content = htmlentities($pure_content);
$entity_content = $mysqli->real_escape_string($entity_content);
$slashedtitle = addslashes($_POST['title']);
$slashedcontent = addslashes($_POST['content']);
$slashedwriter = addslashes($_POST['writer']);
$mysqli->query("INSERT INTO stories (TITLE, WRITER, CONTENT, UPVOTE, DOWNVOTE) VALUES ('$slashedtitle', '$slashedwriter', '$slashedcontent', 0, 0)");
Насколько я вижу, угрозы безопасности нет. С помощью HTMLPurifier весь вредоносный код должен быть удален.
Я подозреваю, что здесь произошло то, что редактор tinyMCE преобразовал ваш написанный код в объекты HTML до Форма была отправлена. Например, <script>
был преобразован в <script>
, Поэтому код не выполняется в браузере и не может быть вредоносным.
Если вы хотите проверить, что происходит с вредоносным кодом, сделайте это правильно и используйте инструмент, такой как Firebug, для вставки кода в редактор, чтобы его нельзя было экранировать.
Других решений пока нет …