我有一个内容提交表单,其中包含多个输入字段,所有这些字段在提交时都直接输入到数据库中。当请求此内容时,将打印该内容。
我已经意识到这是一个安全问题。
如何在允许格式化标签(b、i等)的同时,仅剥离恶意HTML (XSS)?
发布于 2011-01-23 13:00:30
@pst是correct...you需要显式地允许某些标签。但问题是,输入可能到处都是,因此您需要使用HTML Tidy (link to Source Forge Project)之类的库将其放入一个位置,然后可以对清理后的文档执行DOMDocument::loadHTML操作。
您应该使用HTML Tidy来清理您的输入,并将其置于投诉状态,这样您就可以显式地允许某些标记。在永久存储之前,所有其他内容都应该从清理过的内容中删除。(注意:出于性能原因,不要将BLOB存储在数据库中,将它们存储在文件系统中,并在安全位置使用文件路径链接到它们-该位置不在您的web根目录中)。
祝好运。
发布于 2011-01-22 16:10:41
首先对输入运行htmlspecialchars,然后对允许的标记撤消该操作(例如,将<b>替换为<b>)。
发布于 2011-01-22 15:01:56
使用mysql_stripslashes()、htmlspecialchars()和urldecode(),对于整数值,您可能只需进行int类型转换。
https://stackoverflow.com/questions/4766563
复制相似问题