【问题标题】:ReqEx expression for form validation用于表单验证的 RegEx 表达式
【发布时间】:2011-12-25 23:23:58
【问题描述】:

我正在尝试向我的 html 网站添加表单验证,以防止 xss 注入攻击。

我正在使用一个简单的 java 表单验证器 genvalidator_v4.js,它允许我使用正则表达式来确定文本框中允许的内容。我正在尝试编写一个可以防止“”或任何其他可用于此类攻击的标签,但仍允许使用字母数字、标点符号和其他特殊字符。

有什么想法吗?也对其他防止 xss 攻击的方法持开放态度,但我在这方面非常缺乏经验,所以请尽量保持简单。

【问题讨论】:

  • genvalidator_v4 .js 好像不是Java写的吧?
  • 你不能指望客户端验证来防止 XSS 攻击。您需要使用服务器端代码,也许结合客户端验证。

标签: regex xss


【解决方案1】:

您正在尝试将危险输入列入黑名单。这非常棘手,很容易出错,因为可能很危险的令牌数量众多。

因此,建议采用以下两种做法:

  • 转义从数据库中读取的所有内容输出到网页上。如果您正确地对所有内容进行了 HtmlEncode(您选择的语言肯定有一个库方法),那么用户输入 <script>/* do something evil */</script> 并且该代码存储在您的数据库中并不重要。正确编码,这将被逐字打印,不会造成任何伤害。

  • 如果您仍想过滤 输入(这可能作为一个附加安全层有用),白名单通常是比黑名单更安全。因此,与其说< 有害,不如说字母、数字、标点符号等是安全的。究竟什么是安全的取决于您要过滤的字段类型。

【讨论】:

  • 好的,我想使用您的第一种方法,但我找不到任何指南来告诉我如何执行此操作。我每个人都没有数据库,因为我的网站只是简单的 html 页面,其中一个页面上有相关的表单。我将如何在这样的简单网站上实施您的第一种方法?我只是希望我的网站不易受到跨站脚本攻击,因此任何具有这种效果的解决方案就足够了。
  • 你如何处理表单数据?
  • MyWebSite.com/cgi-bin/cgiemail/mailform.txt" METHOD = "post" id="myform">
  • 这会导致发送一封包含订单信息的电子邮件
  • XSS 攻击的工作原理如下:攻击者确保您将 他的 脚本数据放在 your 网页上。通常这是通过攻击者以某种 Web 形式输入脚本,然后 Web 应用程序在网页上打印这些未转义的数据来实现的。由于您的应用程序从不显示用户在网页上输入的任何数据,因此我根本看不到 XSS 是如何发生在这里的。
猜你喜欢
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
相关资源
最近更新 更多