我在托管在本地主机服务器的一个页面中有一个 POST 参数。
$name = addslashes(trim($_POST['name']));
并在其中一个更新.php页面中使用PDO准备语句,并且,
当我尝试提交具有以下数据的字段时,它会显示一个导致XSS攻击的ALERT弹出窗口,那么我该如何防止这种攻击,以便SQL注入和XSS不起作用。
abc"><script>alert(1);</script>
这是我正在使用的 SQL 查询 -
$query = "UPDATE table set name =? where id=?";
$stmt = $conn->prepare($query);
$stmt->execute(array($name,$id));
谢谢
代码注入是 100% 上下文相关的。它不会仅仅因为恶意用户键入"危险"字符而发生。
- 要将内容插入数据库,请摆脱
addslashes()
.您已经在使用预准备语句将代码与数据分开。 - 要将字符串文本注入 HTML 代码,您可以使用
htmlspecialchars()
. - 要将字符串文字注入到 JavaScript 代码中,您可以使用例如
json_encode()
.
等等。注入次数与语言一样多,每种类型都需要独立解决。