【发布时间】:2012-07-07 21:08:29
【问题描述】:
我正在创建一个您“发布”的网站,表单内容保存在 MySql 数据库中,并在加载页面时检索,类似于 facebook。我构建了所有帖子并将原始 html 插入到模板中。问题是,当我在测试时,我注意到我可以将 javascript 或其他 HTML 写入表单并提交,并且在重新加载时,html 或 JS 将被视为源代码,而不是帖子。我认为一些简单的编码可以解决问题,但是使用<form accept-charset="utf-8"> 是行不通的。是否有有效的方法来防止此类安全漏洞?
【问题讨论】:
-
是的。不要将 HTML 保存在数据库中。
-
这些类型的攻击称为 XSS(跨站点脚本)。
-
@Juhana 我没有保存 HTML,我保存的是从表单帖子中获得的内容,通常只是一些文本。但我在考虑攻击者,将 JavaScript 写入表单并提交,生成的 HTML 将包含 JS。
-
换句话说,您将 HTML 保存在数据库中。
-
您希望您的用户能够在您的帖子中使用 HTML 吗?如果你这样做了,那么你就有问题了。您必须找到一种安全的方法来确保他们使用您希望他们使用的标签并且不使用您不使用的标签,这很复杂而且不是很安全。如果您不这样做,请从帖子中完全删除 HTML。
标签: python html pyramid templating