当前位置: 首页 > 知识库问答 >
问题:

使用OWASP ESAPI时是否需要启用规范化?

夹谷辰沛
2023-03-14

我们正在将ESAPI2.x(owasp java安全库)添加到一个应用程序中。

Validator instance = ESAPI.validator();
Assert.assertTrue(instance.isValidInput("test", "xxx@gmail.com", "Email", 100, false));
Validator.Email=^[A-Za-z0-9._%'-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$

有人能展示一个通过使用规范化来防止的攻击样本吗??(爪哇语)

谢谢!

共有1个答案

郭俊人
2023-03-14

以下是几千个可能的例子中的一个:

以这个简单的XSS输入为例:

<script>alert('XSS');</script>
//Now we URI encode it:
%3Cscript%3Ealert(%27XSS%27)%3B%3C%2Fscript%3E

//Now we URI encode it again:

%253Cscript%253Ealert(%2527XSS%2527)%253B%253C%252Fscript%253E

对已经编码过一次的输入进行规范化将得到原始输入,但是在ESAPI的情况下,第三个输入将抛出IntrusionException,因为从来没有一个有效的用例将用户输入进行多次URI编码。在这个特定的示例中,规范化意味着“所有URI数据都将被简化为其实际的字符表示形式”。顺便说一句,ESAPI实际上不仅仅是做URI解码。如果您希望使用正则表达式执行安全性和/或业务验证,这一点非常重要--正则表达式是大多数应用程序中的主要用途。

We are not encoding output given that after the input validation, data becomes trusted.
$=''|'',_=$+!"",__=_+_,___=__+_,($)[_$=($$=(_$=""+{})[__+__+_])+_$[_]+(""+_$[-__])[_]+(""+!_)[___]+($_=(_$=""+!$)[$])+_$[_]+_$[__]+$$+$_+(""+{})[_]+_$[_]][_$]((_$=""+!_)[_]+_$[__]+_$[__+__]+(_$=""+!$)[_]+_$[$]+"("+_+")")()

在保护XSS方面,进行输出编码实际上比进行输入过滤更重要。(如果让我选一个...)

在web开发中,您希望遵循的模式是,来自外部世界的任何输入在任何时候都被视为恶意输入。您可以在任何时候将代码传递给动态解释器。

 类似资料:
  • 我使用testAd ID(ca-app-pub-3940256099942544/1033173712)从admob不是我的admob ID,我需要使用addTestDevice()太,而在移动设备测试?它甚至显示了测试广告屏幕,而不是实时广告。 因为我这样做了,我整天都在使用我的应用程序进行测试,晚上我收到了账户暂停邮件。

  • [警告]:由于激活规范不可用,因此无法激活消息驱动bean的消息endpoint。在激活规范可用之前,消息endpoint将不会接收消息。 MDB必须有激活规范吗?我希望它只是被激活,而不需要添加进一步的配置到服务器。

  • 我想知道SAML解决方案(身份提供者或服务提供商)是否需要支持SAML元数据交换(即SAML元数据规范),以便被定义为完全符合SAML 2.0。 查看SAML一致性文档,不太清楚根据RFC 2119,这是必须的、应该的还是可能的。 任何想法我应该在哪里寻找? 裁判: http://docs.oasis-open.org/security/saml/v2.0/saml-conformance-2.0

  • 问题内容: 会隐式调用吗? 如果可以,可以安全删除下面的代码片段吗? ps。我在官方文件中看不到任何描述: https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html https://docs.oracle.com/javase/8/docs/api/java/lang/Au​​toClose

  • 问题内容: 使用JAXB时是否始终需要ObjectFactory类? 没有它,我得到这个异常: javax.xml.bind.JAXBException:“ com.abc”不包含ObjectFactory.class或jaxb.in​​dex 我搜集到的ObjectFactory可以说是矫kill过正。但是鉴于这个例外,我猜您需要它。.但不确定为什么吗? 问题答案: 当您使用factory方法时

  • 问题内容: 我在查看Cristoph Gohlke的python软件包时 ,发现有一个适用于Python 3.3的Virtualenv软件包。 由于标准python库v3.3中有 venv 软件包,我想知道单独安装此软件包是否有优势。 编辑:从这两个软件包的文档中,virtualenv 1.8.2和 venv 我可以说 venv 标准库软件包缺少以下功能: 选项 在setuptools之间选择还是