避免在<img/>上对动态内容使用htmlspecialchars(),同时避免XSS攻击

时间:2012-05-21 21:19:08

标签: php image xss htmlspecialchars

我需要你帮助解决一个非常简单的问题。文章我网站上某些页面的内容存储在MySQL数据库中,我在输出到浏览器时已经应用了 htmlspecialchars(),但实际上有合法的<img src="images/me.jpg">,呈现为纯文本,同时它们应该是文章内容的有效图像的一部分。

如何成功显示图像,同时避免可能的XSS攻击等。

由于

3 个答案:

答案 0 :(得分:0)

常见的方法是不使用HTML,而是使用自己的格式化语言,如bbcode或Markdown。这样,您可以轻松地将格式转换为HTML,同时避免让用户输入他们想要的任何HTML。

答案 1 :(得分:0)

根据{{​​3}}

Parse the HTML并弃置您不想保留的任何元素/属性/属性值。检查每个src元素的img值,看它是否是有效的URL,如果是,请检查它是否确实存在并且是有效图像。如果没有,丢弃该元素。

如果您使用专有格式化语言(例如BBCode或Markdown),您仍应对每个img元素提供的值执行检查(许多解析BBCode,Markdown等的库将执行这些检查你。)

答案 2 :(得分:0)

使用HTMLPurifier - 它会删除所有脚本,包括放置在标记属性中的javascript,同时保留(并且格式正确)HTML代码