在我的网站上我有一个论坛,我想避免跨站点脚本。你知道一个好的输入验证脚本吗?
答案 0 :(得分:1)
有两种方法可以避免跨站点脚本。
您可以使用正则表达式来过滤客户端和服务器端的数据。
答案 1 :(得分:1)
我一直依赖OWASP PHP过滤器:http://www.owasp.org/index.php/OWASP_PHP_Filters从名称可以看出,它们是服务器端(JavaScript或HTML5验证仅对协助用户有用)和OWASP( Open Web Application Security Project)是一个非盈利组织。
答案 2 :(得分:0)
这取决于您想要写出数据的位置。例如,当您将文本写入输入字段时以及将其简单地写入html正文中时,在两个标记之间时,您需要使用不同的过滤器。
您应该为服务器端的不同数据类型实现不同的过滤器。我建议你应该在打印时过滤文本,而不是当用户发送给你时(当然它不是关于sql注入和其他服务器端技巧),因为(如上所述)过滤器的类型你应该使用取决于打印数据的位置。
如果你想写一个非常简单的论坛,那么只写一个过滤器就足够了,它只是在打印出来之前从文本中删除所有的html标签。请注意,对于高级功能,例如编辑注释,为用户预填表单,或者用户可以在注释中使用任何html标签等,这都不好。
答案 3 :(得分:0)
简单。在使用之前,请确保从输入对象中转义HTML。这样,发送的数据将被视为原始文本。这样做的方法是在将数据嵌入页面之前通过一些解析器传递输入(或以某种方式使用它)。
答案 4 :(得分:0)
我同意anand,有两种主要方法可以避免XSS:输入验证和输出转义。为了验证表单输入,请绑定到Django的表单验证框架:http://code.google.com/appengine/articles/djangoforms.html
以下是一些用于在Django模板中对输出进行清理的代码示例。而不是:
Welcome, {{ firstname }}!
这样做:
Welcome, {{ firstname|escape }}!
这是来自这篇非常好的博文:http://startupsecurity.info/blog/2008/10/28/avoid-xss-on-google-app-engine/
答案 5 :(得分:0)
您有两种验证选项。对于非敏感数据,可以使用客户端JavaScript。 在JavaScript中,您可以编写简单的函数来验证数据。
对于敏感数据,你应该使用服务器端脚本,如php,jsp,asp,asp.net等。
这可以帮到你。
答案 6 :(得分:0)