2012-01-11 67 views
9

我是一位开发App Security的Java开发人员,我偶然发现了OWASP组织及其配套Java API ESAPI。Java安全性与ESAPI

在几个月前我在这个网站上提出的另一个问题,有人向我指出,ESAPI是开源应用程序第二产业的主要参与者。

我现在想知道的是,我确定ESAPI与内置Java安全模型(根源于javax.security.auth)在身份验证/授权以及其他领域重叠。 但是,如果严格遵守Java安全API,那么ESAPI明确解决的app sec有哪些地方无法实现?

基本上,我想问一下,如果学习ESAPI是否有意义,如果它的所有优点/特性已经在某些现有的Java API中涵盖了。提前致谢!

回答

7

AFAIK,ESAPI也使用java API,并添加特定于现实世界威胁的包装。例如WAF(Web应用程序防火墙),为了使用Java API来实现这一目标,您将结束编写大量代码,这些代码由ESAPI完成,并很好地包装为API,因此,现在如果您想执行WAF检查,则可以只需在几个方法调用中实现它。

简而言之,ESAPI就像包装库(内置Java API),它可以减少重新发明轮子并帮助抵御现实世界的安全威胁。

如果您看到此ESAPI API网址,您可以轻松识别ESAPI开发的API如何抵御每种可能的威胁。

+0

谢谢thinksteep!这是否意味着通过最大限度地使用ESAPI,我不需要实现或配置任何Java API特定的项目,比如SecurityManager?基本上,我问是否使用ESAPI可以覆盖Java内置安全模型提供的所有基础。再次感谢! – IAmYourFaja 2012-01-11 19:00:21

+0

您可能会以ESAPI配置结束。记住你不能完全避免配置。这些是任何软件的驱动参数。 – kosa 2012-01-11 19:08:38

2

作为一名.NET开发人员,我仅仅熟悉Java和ESAPI。然而,作为一个专注于编写安全代码的狂热偏执狂开发者(因为我写了一些真正可怕的东西),这是我看过的东西。

在我看来,这是绝对值得的。在没有这些包的情况下编写好的代码是完全可能的,但使用这些包可以使编写更好的代码更加容易。

在.NET方面,我们使用了类似的东西 - 微软模式和实践库。从我了解了Java ESAPI提供类似的目的,这就是:

它提供了一套易于使用已经使用引擎盖下最佳实践方法,让你不不得不担心这么多。例如(这只是编写安全应用程序所需要的一小部分),使用ADO.NET和Java,通过将用户输入内容嵌入到字符串(坏)中编写SQL语句非常简单,而且它也仅仅是因为易于使用参数化查询(好)。使用这些API,暴露了使用引擎盖下良好模式的方法。让新开发人员加快速度会更容易,并且确保在让您编写更少代码的同时不会变得“马虎”。

+0

谢谢你这么好的回答戴夫!请在@ thinksteep的回复下看到我的评论 - 我对你有同样的问题!再次感谢! – IAmYourFaja 2012-01-11 19:00:45

+0

我无法专门回答该评论,但总的来说,我不相信它会涵盖所有***的基础。没有框架是完美的或涵盖一切。我认为这是你的工具集中的一个好工具。直到你成为学习如何运用技巧的人。这意味着要自己挖掘并学习ESAPI以找到类似的答案。基本上我回答了你最后的问题:“如果我学习ESAPI是有道理的” – David 2012-01-11 19:09:31

3

ESAPI的一个关键优势是其输入验证和输出清理功能,其中Java安全类目前不支持AFAIK。 ESAPI专门针对Web应用程序安全域,这是它擅长的地方。