Защита от html-инъекций

Итак, я знаю, что вы можете сделать $words = htmlspecialchars($_POST['name']); в php, чтобы избежать специальных символов и предотвратить некоторые инъекции html.

Но у меня возникли проблемы с реализацией его в моем php-коде. Я читал, что вы должны использовать его, прежде чем отображать то, что вы показываете зрителю сайта, но я не знаю, как это сделать. Я немного новичок в php.

Итак, я смог выполнить часть SQL-инъекции, но вот часть кода, на которой я застрял, как я описал выше.

Я пытаюсь предотвратить html-инъекцию для заголовка блога и тега

$result= mysql_query("SELECT * FROM Bpost");

echo '<div class = "blog" align = "center">';
    while($row = mysql_fetch_array($result))
        {

        echo "<div class = 'tname'>";
        echo $row['title']; 
        echo '</div>';

        echo '<div class = "bpost">';
        echo $row['blog'];
        echo '</div>';

        echo '<div class = "tag">';
        echo $row['tags'];
        echo '</div>';
        echo '</br>';

        }
echo '</div>';

Если вам нужен пример кода из других моих материалов, дайте мне знать. Мне кажется, что этого было достаточно.


person user1776221    schedule 12.12.2012    source источник
comment
Не используйте mysql_* функции в новом коде. Они больше не поддерживаются и официально объявлены устаревшими. Видите красное поле? Узнайте о подготовленных операторах и используйте PDO или MySQLэта статья поможет вам определиться. Если вы выберете PDO, вот хороший учебник.   -  person Naftali aka Neal    schedule 13.12.2012
comment
@Neal Вы должны написать бота, чтобы сделать это.   -  person ceejayoz    schedule 13.12.2012
comment
@ceejayoz, кто сказал, что я этого не делал? :-П   -  person Naftali aka Neal    schedule 13.12.2012
comment
спасибо, что указали на это, ребята. Я очень ценю это. Я помню об этом и в следующий раз расскажу об этом на своем уроке.   -  person user1776221    schedule 13.12.2012


Ответы (1)


Просто измените echo $row['title']; на echo htmlspecialchars($row['title']); (и повторите для всех других пользовательских данных), и все готово.

person ceejayoz    schedule 12.12.2012
comment
Повторюсь: всегда вызывайте htmlspecialchars при отображении строки, безопасность которой вы не можете гарантировать. Если ваша строка может содержать HTML, это другая история, и это гораздо более сложный случай. - person Juan Mendes; 13.12.2012
comment
Да, я знаю, что это не защищает от всего. Это только одна часть, которую я хотел добавить к моему дополнительному кредитному проекту в моем классе сценариев. Мы кратко обсудили внедрение sql и html, и я подумал, что мог бы также включить его в этот дополнительный кредит. проекта (хотя это и не обязательно) просто для того, чтобы сделать все возможное и выжать все дополнительные баллы из моего учителя. - person user1776221; 13.12.2012