Почему MySQL подготовить заявление не дезинфицирует данные - PullRequest
0 голосов
/ 17 октября 2018

я использую этот код

<?php
include('connection.php');
$heading = $_POST['upd_head'];
$note =  $_POST['upd_text'];
$post_id = $_POST['up_post_id'];
$supd_head= "UPDATE posts SET heading= ?, note=? WHERE post_id=?";
$stmt_head= mysqli_stmt_init($db_conx);
if(!mysqli_stmt_prepare($stmt_head, $supd_head)){
echo "sql is not ready";
 }
else{
mysqli_stmt_bind_param($stmt_head, "sss", $heading,$note,$post_id);
mysqli_stmt_execute($stmt_head);
}

?>

когда я даю этот ввод

<script>alert('hack');</script>

он сохраняется как в базе данных и выдает предупреждение, когда я обновляю страницу после обновленияданные.Почему бы не очистить данные в первую очередь?Но я думаю, что нет смысла использовать mysqli_real_escape_string при использовании оператора prepare.

1 Ответ

0 голосов
/ 17 октября 2018

mysqli_stmt_prepare не предназначен для предотвращения Межсайтовый скриптинг (XXS)

Все зависит от того, как вы отображаете данные.Ссылка выше показывает пример:

echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');

Много информации можно найти на сайте OWASP

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