在我的网站我有一个论坛,我想避免跨站点脚本。你知道一个好的输入验证脚本吗?输入验证检查
输入验证检查
回答
这取决于你想在哪里写出数据。例如,当您将文本写入输入字段并将其简单写入html正文中时,您需要使用不同的过滤器。
您应该为服务器端的不同数据类型实施不同的过滤器。我建议你应该在打印出来的时候过滤文本,而不是在用户发送给你的时候(当然这不是关于sql注入和其他服务器端技巧),因为(如上所述)你应该使用过滤器的类型使用取决于打印数据的位置。
如果你想写一个非常简单的论坛,那么它只需要编写一个过滤器就足够了,只需在打印出来之前从文本中删除所有的html标签即可。请注意,它不适用于高级功能,例如编辑注释,预填表格给用户,或者用户可以在评论中使用任何html标记等。
有两种方法可以避免跨站点脚本。
- 滤波由用户 (主要是脚本标记和HTML标记) 无论是在客户端,以及对 服务器端输入。
- 显示内容为 Html实体,以避免跨站点 脚本。当然,如果你想显示一些 的标签,去选项一。 否则选项二更可靠 。
您可以使用正则表达式来过滤客户端以及服务器端的数据。
我正在使用appengine,并且正在编写python .. – arik 2010-09-14 15:46:16
上述两种方法都是独立于语言的。在python中,用're'模块对内容进行过滤具有良好的正则表达式支持。 – 2010-09-15 04:13:52
如果您使用的是带有appengine的Django,它默认会自动转义HTML实体。 – 2010-09-15 04:14:38
我一直依赖于OWASP PHP过滤器:http://www.owasp.org/index.php/OWASP_PHP_Filters正如您从名称中可以看出的那样,它们是服务器端(JavaScript或HTML5验证仅用于帮助用户)和OWASP(Open Web Application安全项目)是一个非营利组织。
简单。确保在使用它之前从输入对象中跳出HTML。这样,发送的数据将被视为原始文本。做到这一点的方法是在将数据嵌入到页面中(或以某种方式使用它)之前通过某个解析器传递输入。
我同意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/
你有两个选项进行验证。对于非敏感数据客户端JavaScript可能会用到。在JavaScript中使用 ,您可以编写简单的函数来验证您的数据。
对敏感数据,你应该使用服务器端脚本一样,PHP,JSP,ASP,asp.net等
可能这会帮助你。
- 1. 输入验证:检查多个值
- 2. C#输入验证检查正数
- 3. ISBN检查器 - 验证用户输入
- 4. jQuery验证插件,检查输入defaultValue
- 5. 验证(检查)输入的路径
- 6. php输入验证检查和simplexml_load_string
- 7. 使用scanf验证输入(检查输入是char还是int)
- 8. jQuery验证 - 检查复选框时检查输入值
- 9. C输入检查和以前的输出验证代码
- 10. 验证输入
- 11. 验证输入
- 12. 输入验证
- 13. 验证输入
- 14. Laravel检索并验证多个输入
- 15. 如何跳过ActiveRecord中的验证检查(甚至没有输入验证检查)?
- 16. 检查是否一个输入是空的(验证表单)
- 17. 如何验证/检查输入时间大于oracle中的sysdate
- 18. 多个文本框输入验证检查
- 19. 用于数字检查的文本输入验证
- 20. 检查或验证表单输入以某个字母开头
- 21. 如何检查Java中的用户输入验证?
- 22. 范围验证器 - 检查整数范围时输入字母
- 23. 输入日期验证检查调用to_date
- 24. 如何验证Python的检查没有用户输入
- 25. AngularJS验证不检查步骤HTML数字输入的限制
- 26. Jquery验证器插件不检查新输入
- 27. 如何检查输入验证等于“0”,只有“0”?
- 28. Codeigniter坦克验证检查用户输入的密码
- 29. jQuery的验证 - 检查输入违反公认的价值
- 30. 验证以检查之前的空输入类型
验证应该(而且必须)来完成服务器端。你不能相信JavaScript。你使用哪种服务器语言? – Keeper 2010-09-14 11:41:22
是文章帮助完整给你 – 2010-09-14 12:02:09
@Keeper - 做服务器端验证的绝对和一致的必要性并不禁止客户端验证*。 – annakata 2010-09-14 12:06:49