输入验证检查

时间:2010-09-14 11:39:19

标签: javascript css validation

在我的网站上我有一个论坛,我想避免跨站点脚本。你知道一个好的输入验证脚本吗?

7 个答案:

答案 0 :(得分:1)

有两种方法可以避免跨站点脚本。

  1. 过滤用户的输入 (主要是脚本标签和html标签) 无论是在客户端还是在客户端 服务器端。
  2. 将内容显示为 Html实体避免跨站点     脚本。当然,如果你想展示一些     的标签,去选项一。     否则选项二更多     可靠。
  3. 您可以使用正则表达式来过滤客户端和服务器端的数据。

答案 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)