在最近的一次采访中,我被问到:
开源Web应用程序(比如建立在Struts/Spring上)更容易被黑客攻击,因为任何人都可以访问源代码并进行更改.你怎么防止它?
我的回答是:
java源代码不能直接访问.它被编译成类文件,然后将它们捆绑在war文件中,并部署在像Weblogic app server这样的安全容器中.应用服务器位于公司防火墙后面,无法直接访问.
那时候 - 我没有提到任何关于XSS和SQL注入的内容,它们会影响类似于开源的基于COTS的Web应用程序.
我的问题:
a)我对这个问题的回答是否正确?
b)我可以在答案中添加哪些附加内容?
提前致谢.
编辑:
在我消化您的回复时 - 我还要指出这个问题也适用于Liferay和Apache OFBiz等框架.
问题是通过默默无闻的隐瞒对安全的争论.我建议你阅读通常的论据,反对并看看它是如何适合的:
通过默默无闻的安全(维基百科)
强化Wordpress
SSH服务器安全(Putty)
我个人认为,默默无闻是充其量反对攻击的最弱层.它可能有助于过滤掉不知情的攻击者的自动攻击,但它对确定的攻击没有多大帮助.
a)我对这个问题的回答是否正确?
关于源无法访问(更改它)的部分,因为它是在无法触及的地方编译和部署的,这不是一个好的答案.这同样适用于非开源软件.针对开源堆栈的观点是可以读取源代码,这样可以更容易地找到可以针对已安装的应用程序(已编译或未编译)利用的漏洞.
关于防火墙的观点很好(即使它不涉及软件的开放性或封闭性).
b)我可以在答案中添加哪些附加内容?
通过默默无闻(这是在这里提出的论点)反对安全的主要反驳是,使用开源软件,会有更多人查看来源以找到并解决这些问题.
因为任何人都可以访问源代码并进行更改.
你确定那是他们说的吗?更改?不是"研究它"?
我不知道有谁可以只改变Struts的源代码......