防止安全漏洞

Wiz*_*Wiz 0 html python templating pyramid

我正在创建一个"发布"的网站,表单内容保存在MySql数据库中,并在加载页面时检索,类似于facebook.我构建所有帖子并将原始html插入模板中.事情是,正如我测试的那样,我注意到我可以在表单中编写javascript或其他HTML并提交它,并且在重新加载时,html或JS将被视为源代码,而不是帖子.我认为一些简单的编码可以解决问题,但使用<form accept-charset="utf-8">不起作用.有没有一种有效的方法来防止这种类型的安全漏洞?

Ser*_*gey 8

好吧,为了图片的完整性,我想提一下,有两个地方你可以在金字塔中清理用户输入 - 在进行中,在将数据保存到数据库之前,以及在出路之前,在渲染数据之前模板.可以说,将HTML/JavaScript存储在数据库中没有任何问题,只要您确保模板中呈现的所有内容都被正确转义,它就不会让您感到困惑.

事实上,Chameleon和Mako模板引擎都默认启用了HTML转义功能,所以如果你"像往常一样"使用它们,你将永远不会将用户输入的HTML注入到你的页面中 - 相反,它将被渲染为文本.如果没有这个,清理用户输入将是一项艰巨的任务,因为您需要检查用户输入数据的每个单独表单中的每个字段(即不仅是"方便"的textarea小部件,还包括其他所有内容 - 用户名,用户电子邮件等).

因此,您必须做一些不寻常的事情(或使用其他模板库)才能使Pyramid以这种方式运行.如果您提供有关正在使用的模板库和代码示例的更多详细信息,我们将能够找到以正确方式修复它的方法.