一. OWASP
OWASP(开放Web软体安全项目- Open Web Application Security Project)是一个开放社群、非营利性组织,目前全球有130个分会近万名会员,其主要目标是研议协助解决Web软体安全之标准、工具与技术文件,长期 致力于协助政府或企业了解并改善网页应用程式与网页服务的安全性。
弱点 |
描述 |
A1 –注入(Injection) |
注入攻击漏洞,例如SQL、OS以及LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。 |
A2-失效的身份认证和会话管理(Broken Authentication and Session Management) |
与身份认证和会话管理相关的应用程序功能往往得不到正确的实现,这就导致了攻击者破坏密码、密匙、会话令牌或攻击其他的漏洞去冒充其他用户的身份。 |
A3-跨站脚本 (Cross-Site Scripting,XSS) |
当应用程序收到含有不可信的数据,在没有进行适当的验证和转义的情况下,就将它发送给一个网页浏览器,这就会产生跨站脚本攻击(简称XSS)。XSS允许攻击者在受害者的浏览器上执行脚本,从而劫持用户会话、危害网站、或者将用户转向至恶意网站。 |
A4-不安全的直接对象引用(Insecure Direct Object References) |
当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙, 就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据 |
A5–安全配置错误(Security Misconfiguration) |
好的安全需要对应用程序、框架、应用程序服务器、Web服务器、数据库服务器以及平台定义和执行的安全配置。由于许多设置的默认值并不是安全的,因此,必须定义、实施和维护这 些设置。这包含了对所有的软件保持及时地更新,包括所有应用程序的库文件。 |
A6 –敏感信息泄漏(Sensitive Data Exposure) |
许多Web应用程序没有正确保护敏感数据,如信用卡、税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。 |
A7 –功能级访问控制缺失(Missing Function Level Access Control) |
大多数Web应用程序的功能在UI中可见以前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。 |
A8 –跨站请求伪造 (Cross-Site Request Forgery,CSRF) |
一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求,包括该用户的会话cookie和其他认证信息,发送到一个存在漏洞的Web应用程序。这就允许攻击者迫使用户浏览器向存在漏洞的应用程序发送请求,而这些请求会被应用程序认为是用户的合法请求。 |
A9 –使用含有已知漏洞的组件(Using Components with Known Vulnerabilities) |
组件,比如:库文件、框架和其他软件模块,几乎总是以全部的权限运行。如果一个带有漏洞的组件被利用,这种攻击可以造成更为严重的数据丢失或服务器接管。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。 |
A10 –未验证的重定向和转发(Unvalidated Redirects and Forwards) |
Web应用程序经常将用户重定向和转发到其他网页和网站,并且利用不可信的数据去判定目的页面。如果没有得到适当验证,攻击者可以重定向受害用户到钓鱼软件或恶意网站, 或者使用转发去访问未授权的页面。 |
针对性处理参考: http://blog.csdn.net/dyllove98/article/details/8759910
二. 开发阶段
使用Visual Studio Code Analysis进行代码静态分析,可以检查设计,性能,安全等方面的缺陷。
http://www.mytecbits.com/microsoft/dot-net/donnet-code-review-using-visual-studio-code-analysis
三. Http响应头的处理
Http响应头的处理包括两个方面,一是移除暴露服务器敏感信息的Http Header, 二是添加加强安全性的HttpHeader.
移除默认的头,参考下面的链接地址
在ASP.Net和IIS中删除不必要的HTTP响应头
http://stackoverflow.com/questions/12803972/removing-hiding-disabling-excessive-http-response-headers-in-azure-iis7-without
HttpHeader中Server的信息,难以通过配置关闭,需要使用HttpModule来处理。
/// <summary> /// 移除特定的HttpHeader /// </summary> public class CustomServerHeaderModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.PreSendRequestHeaders += OnPreSendRequestHeaders; } void OnPreSendRequestHeaders(object sender, EventArgs e) { // modify the "Server" Http Header //HttpContext.Current.Response.Headers.Set("Server", "Stefan’s Webserver"); if (HttpContext.Current != null) { HttpContext.Current.Response.Headers.Remove("Server"); } } }
<httpProtocol allowKeepAlive="true"> <customHeaders> <remove name="X-Powered-By" /> <add name="X-Content-Type-Options" value="nosniff"/> <add name="X-Frame-Options" value="SAMEORIGIN" /> <add name="X-XSS-Protection" value="1; mode=block"/> <add name="X-Product-Name" value="CMS" /> <add name="X-UA-Compatible" value="IE=edge" /> <!-- <add name="Pragma" value="no-cache" /> <add name="Expires" value="Mon, 26 Jul 1970 05:00:00 GMT" /> <add name="Cache-Control" value="no-cache, must-revalidate" /> --> </customHeaders> </httpProtocol>
其它安全性头部设置,可以添加到customHeaders节。
各种Header的设置参考: header的安全配置指南
免费软件
ironwasp (报告范例https://ironwasp.org/report.html)
Owasp ZAP
商业软件
Checkmarx
HPfortify
Lucentsky