最近一直在修改网站的安全问题,期间遇到了很多问题,所有在这里给大家分享一下,具体问题还需要按情况修改。
扫描的工具是 用的 IBM Appscan。
1. Authentication Bypass Using HTTP Verb Tampering
这个问题的整改方案是相应的链接必须只有http协议才能访问,因为我用的是.Net Mvc ,所以我在方法的上面加上了 [HttpGet] 、[HttpPost] 注解。
2.Cacheable SSL Page Found
页面禁用缓存,如果扫描出来的页面不是很多话 可以在相应的页面的
标签内加上以下代码 @{
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.Cache.SetNoStore();
}
如果扫描出来的页面很多的话 可以写一个filter 过滤器来统一配置,这里我就不贴代码了
3.Query Parameter in SSL Request
这个问题是说必须使用 https post请求传递参数,所以需要把get的请求修改为post请求。如果有一些必须使用get请求的话,就不要在页面的代码里体现此链接,比如页面内有 www.baidu.com?a=1,这样是不行的,可以改成 'www.baidu.com'+'?a=1'
4.Session Identifier Not Updated
sessionid安全问题,在登录的login页面将session清空一下可以修改此问题。
另外,Cookie内sessionid不安全问题可以在webconfig内加入此标签解决
5.Cross-Site Request Forgery
这是跨站请求伪造攻击,可判断前一个页面的referer必须与本网站的域名相同来防止此攻击比且可以通过 appscan的扫描。但是判断referer也是存在referer伪造的危险的,最好还是referer+token的方法来修改此问题,具体方法可度娘查询一下。
6.① Missing "Content-Security-Policy" header ②Missing "X-Content-Type-Options" headr ③Missing "X-XSS-Protection" header ④Missing Cross-Frame Scripting Defence
这些问题可以在 web.config里同意配置一下来解决,在 system.webServer 标签下加入一下代码
7.Unencrypted Login Request
此问题需要 将网站改为 https 访问。
8.Microsoft Windows MHTML Cross-Site Scriptin
这是XSS跨站脚本攻击 ,也就是用户可以通过输入脚本语句来攻击你的网站,解决方法是写一个filter过滤一下,将< >等特殊字符编码。
9. OpenSSL TLS Heartbeat buffer over-read (a.k.a. Heartbleed bug)
如果改为https访问一般会出现 心脏出血 的ssl协议漏洞,修改方法请向下看
10. RC4 cipher suites were detected
这里是SSL/TLS加密方式不安全,修改方法请向下看
11. Weak SSL Cipher Suites are Supported
12. Browser Exploit Against SSL/TLS (a.k.a. BEAST)
以上9-12这几个问题 在 windows 有一个很好用的软件来解决此问题 叫 IISCrypto40.exe ,可到 https://www.nartac.com/Products/IISCrypto/ 链接下载,然后配置如下
下载完后,在windows server 服务器上运行此软件,然后按照上图来勾选每一项,最后 apply后重启服务器 即可修改以上问题