我们正在我们的网站上实现应用程序安全。这是一个基于REST的应用程序,所以我必须验证整个请求有效负载,而不是每个属性。此有效载荷需要针对所有类型的攻击(SQL、XSS等)进行验证。在浏览时,我发现人们正在使用ESAPI进行网络安全。
我很困惑于ESAPI.validator().getValidXXX,ESAPI.encoder() Java的ESAPI库。这两者之间的区别是什么,以及何时使用哪个API。我还想知道在什么情况下我们可以使用这两个API的
根据我的理解,我可以使用两个API的示例对输入进行编码,以形成有效的html:
ESAPI.encoder().encodeForHTML(input);ESAPI.validator().getValidSafeHTML(context, input, maxLength, allowNull)。对于XSS攻击,我使用&matcher对html标记进行了代码更改,但我希望使用ESAPI实现同样的目标。有人能帮我实现这个目标吗。
或
是否有类似于ESAPI的为websecurity开发的新java插件,而我并没有遇到这种情况。我已经找到了https://jsoup.org/,但它只解决了XSS攻击,我正在寻找一个库,它可以为多个攻击提供API (SQL /XSS)
发布于 2016-07-05 22:20:07
ESAPI.encoder().encodeForHTML(input);当您将输入发送到浏览器时,您将使用此方法,以便将发送的数据转义到HTML中。这可能会变得很棘手,因为您必须知道确切的数据是否是在将数据呈现到HTML之前传递给javascript。或者它是否被用作HTML属性的一部分。
我们使用:
ESAPI.validator().getValidSafeHTML(context, input, maxLength, allowNull).当我们想要从客户端获得“安全”HTML时,它是由一个antisamy策略文件支持的,该文件详细描述了我们将从用户那里接受的HTML标记和HTML属性的类型。默认情况是拒绝,因此,如果要接受以下内容,则必须显式地告诉策略文件:
<a href="www.someurl.com">text</a>您需要指定"a“标记,并允许"href”属性,甚至可以针对文本字段和标记属性中的内容指定进一步的规则。
您只需要"getValidSafeHTML“,如果您的应用程序需要接受来自用户的HTML内容.这在大多数公司的应用中都是似是而非的。(Myspace曾经允许这样做,结果是Samy蠕虫。)
通常,当内容进入应用程序时使用验证器API,当将内容定向回用户或后端解释器时使用编码器API。AntiSamy不再受支持,所以如果您需要一个“安全的HTML”解决方案,请使用OWASP的HTML消毒液。
是否有类似于ESAPI的为websecurity开发的新java插件,而我并没有遇到这种情况。我已经找到了https://jsoup.org/,但它只解决了XSS攻击,我正在寻找一个库,它可以为多个攻击提供API (SQL /XSS)
另一个尝试类似安全性的方法是HDIV。这是一个由HDIV开发人员将HDIV与ESAPI进行比较的答案。
*免责声明:我是ESAPI开发人员和OWASP成员。
Sidenote:我不鼓励使用Jsoup,因为默认情况下它会变异传入的数据,构造“最佳猜测”(无效)解析树,并且不允许您对该行为进行细粒度控制.意思是,如果有一个实例,您希望覆盖并强制执行特定类型的策略,强生断言,它总是比你聪明.但事实并非如此。
https://stackoverflow.com/questions/38127965
复制相似问题