我有一个包含多个输入字段的内容提交表单,所有这些字段在提交时都会直接输入到数据库中。当请求此内容时,它会被打印出来。
我意识到这是一个安全问题。
如何只去除恶意 HTML (XSS),同时仍然允许格式化标签(b
、i
等)?
最佳答案
@pst是正确的...您需要明确允许某些标签。但问题是输入可能无处不在,因此您需要使用像 HTML Tidy (link to Source Forge Project) 这样的库。把它放到一个你可以的地方DOMDocument::loadHTML清理后的文档。
您应该使用 HTML Tidy
来清理您的输入并使其进入投诉状态,这样您就可以明确地允许某些标签。在永久存储之前,应从已清理的内容中删除所有其他内容。 (注意:出于性能原因,不要将 BLOB 存储在您的数据库中,将它们存储在您的文件系统中并使用安全位置中的文件路径链接到它们 - 一个不在您的 Web 根目录中的位置)。
祝你好运。
关于javascript - 如何从提交的内容中删除恶意 HTML(XXS 等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766563/