我有一个允许用户保存图像的网站。我使用'mysql_real_escape_string'清理mysql插件,但是有人去了并在其图像描述中输入了内容重定向的元数据,因此无论何时我们的网站加载(加载最新图像),它都会重定向。
如何清理我的字符串或SQL查询以防止这种情况发生?
提前致谢!
答案 0 :(得分:0)
对于这个特定的例子,你可以在输出数据时使用htmlentities来避免它:
<?php
$str = "A 'quote' is <b>bold</b>";
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
?>
问题在于,它会摧毁几乎所有任何 HTML用于你正在保存的东西。如果你试图允许某些标签并禁止其他标签,它会很快变得更加复杂。
答案 1 :(得分:0)
mysql_real_escape_string
仅用于防止sql注入。
要阻止XSS,您需要使用htmlspecialchars或htmlentities来清理html内容。
答案 2 :(得分:0)
我认为你应该在每次从数据库中放入任何内容之前使用htmlspecialchars();
,然后在将用户输入提交到数据库之前使用预准备语句+ htmlspecialchars();
[可选]
答案 3 :(得分:0)
以下是您可以做的几件事
strip_tags()
mysqli_*
功能代替mysql_
htmlentities()