在互联网的快速发展中,Web安全已经成为一个不可忽视的领域。Web安全,即网络安全,主要关注与Web相关的各种安全问题,包括网站、应用程序和数据等。随着Web2.0、社交网络、云计算等技术的普及,Web安全问题愈发突出,对个人和企业信息安全构成威胁。
早年间的小白式服务器运维已逐渐被市场淘汰,但IIS环境下的Web网站绝不在少数,web漏洞防范仍然十分必要,下面针对第三方安防公司通过专业检测工具扫描出来的威胁分值在4分以内的常见低漏洞。
一、常见漏洞提示
详细描述:X-Content-Type-Options HTTP 消息头相当于一个提示标志,被服务器用来提示客户端一定要遵循在 Content-Type 首部中对 MIME 类型 的设定,而不能对其进行修改。这就禁用了客户端的 MIME 类型嗅探行为,换句话说,也就是意味着网站管理员确定自己的设置没有问题。
漏洞危害:X-Content-Type-Options响应头的缺失使得目标URL更易遭受跨站脚本攻击。
解决办法:
将您的服务器配置为在所有传出请求上发送值为“nosniff”的“X-Content-Type-Options”头
对于Apache,请参阅:http://httpd.apache.org/docs/2.2/mod/mod_headers.html
对于IIS,请参阅:https://technet.microsoft.com/pl-pl/library/cc753133%28v=ws.10%29.aspx
对于nginx,请参阅:http://nginx.org/en/docs/http/ngx_http_headers_module.html
详细描述:HTTP X-XSS-Protection 响应头是 Internet Explorer,Chrome 和 Safari 的一个特性,当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。
漏洞危害:X-XSS-Protection响应头的缺失使得目标URL更易遭受跨站脚本攻击。
解决办法:
将您的服务器配置为在所有传出请求上发送值为“1”(例如已启用)的“X-XSS-Protection”头
对于Apache,请参阅:http://httpd.apache.org/docs/2.2/mod/mod_headers.html
对于IIS,请参阅:https://technet.microsoft.com/pl-pl/library/cc753133%28v=ws.10%29.aspx
对于nginx,请参阅:http://nginx.org/en/docs/http/ngx_http_headers_module.html
详细描述:HTTP 响应头Content-Security-Policy允许站点管理者控制用户代理能够为指定的页面加载哪些资源。除了少数例外情况,设置的政策主要涉及指定服务器的源和脚本结束点。
漏洞危害:Content-Security-Policy响应头的缺失使得目标URL更易遭受跨站脚本攻击。
解决办法:
将您的服务器配置为发送“Content-Security-Policy”头
对于Apache,请参阅:http://httpd.apache.org/docs/2.2/mod/mod_headers.html
对于IIS,请参阅:https://technet.microsoft.com/pl-pl/library/cc753133%28v=ws.10%29.aspx
对于nginx,请参阅:http://nginx.org/en/docs/http/ngx_http_headers_module.html
详细描述:Web服务器对于HTTP请求的响应头中缺少 Strict-Transport-Security,这将导致浏览器提供的安全特性失效。 当 Web 服务器的 HTTP 头中包含 Strict-Transport-Security 头时,浏览器将持续使用HTTPS来访问Web 站点,可以用来对抗协议降级攻击和 Cookie 劫持攻击。其可选的值有:max-age=SECONDS,表示本次命令在未来的生效时间 includeSubDomains,可以用来指定是否对子域名生效
漏洞危害:Web 服务器对于 HTTP 请求的响应头中缺少 Strict-Transport-Security,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。
解决办法:
(1)修改服务端程序,给HTTP响应头加上Strict-Transport-Security 如果是java服务端,可以使用如下方式添加HTTP响应头response.setHeader("Strict-Transport-Security", "value"); 如果是php服务端,可以使用如下方式添加HTTP响应头header("Strict-Transport-Security: value"); 如果是asp服务端,可以使用如下方式添加HTTP响应头Response.AddHeader "Strict-Transport-Security", "value"; 如果是python django服务端,可以使用如下方式添加HTTP响应头response = HttpResponse() response["Strict-Transport-Security"] = "value"; 如果是python flask服务端,可以使用如下方式添加HTTP响应头response = make_response() response.headers["Strict-Transport-Security"] = "value"; (2)修改负载均衡或反向代理服务器,给HTTP响应头加上Strict-Transport-Security 如果使用Nginx、Tengine、Openresty等作为代理服务器,在配置文件中写入如下内容即可添加HTTP响应头:add_header Strict-Transport-Security value; 如果使用Apache作为代理服务器,在配置文件中写入如下内容即可添加HTTP响应头:Header add Strict-Transport-Security "value"
详细描述:Web 服务器对于 HTTP 请求的响应头中缺少 Strict-Transport-Security,这将导致浏览器提供的安全特性失效。 当 Web 服务器的 HTTP 头中包含 Strict-Transport-Security 头时,浏览器将持续使用 HTTPS 来访问 Web 站点,可以用来对抗协议降级攻击和 Cookie 劫持攻击。其可选的值有:max-age=SECONDS,表示本次命令在未来的生效时间 includeSubDomains,可以用来指定是否对子域名生效
漏洞危害:Web 服务器对于 HTTP 请求的响应头中缺少 Strict-Transport-Security,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。
解决办法:
(1)修改服务端程序,给HTTP响应头加上Strict-Transport-Security 如果是java服务端,可以使用如下方式添加HTTP响应头response.setHeader("Strict-Transport-Security", "value"); 如果是php服务端,可以使用如下方式添加HTTP响应头header("Strict-Transport-Security: value") 如果是asp服务端,可以使用如下方式添加HTTP响应头Response.AddHeader "Strict-Transport-Security", "value"; 如果是python django服务端,可以使用如下方式添加HTTP响应头response = HttpResponse() response["Strict-Transport-Security"] = "value"; 如果是python flask服务端,可以使用如下方式添加HTTP响应头response = make_response() response.headers["Strict-Transport-Security"] = "value"; (2)修改负载均衡或反向代理服务器,给HTTP响应头加上Strict-Transport-Security 如果使用Nginx、Tengine、Openresty等作为代理服务器,在配置文件中写入如下内容即可添加HTTP响应头:add_header Strict-Transport-Security value; 如果使用Apache 作为代理服务器,在配置文件中写入如下内容即可添加HTTP响应头:Header add Strict-Transport-Security "value"
详细描述:Web 服务器对于 HTTP 请求的响应头中缺少 Strict-Transport-Security,这将导致浏览器提供的安全特性失效。 当 Web 服务器的 HTTP 头中包含 Strict-Transport-Security 头时,浏览器将持续使用 HTTPS 来访问 Web 站点,可以用来对抗协议降级攻击和 Cookie 劫持攻击。其可选的值有:max-age=SECONDS,表示本次命令在未来的生效时间 includeSubDomains,可以用来指定是否对子域名生效
漏洞危害:Web 服务器对于 HTTP 请求的响应头中缺少 Strict-Transport-Security,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。
解决办法:
(1)修改服务端程序,给HTTP响应头加上Strict-Transport-Security 如果是java服务端,可以使用如下方式添加HTTP响应头response.setHeader("Strict-Transport-Security", "value"); 如果是php服务端,可以使用如下方式添加HTTP响应头header("Strict-Transport-Security: value") ; 如果是asp服务端,可以使用如下方式添加HTTP响应头Response.AddHeader "Strict-Transport-Security", "value"; 如果是python django服务端,可以使用如下方式添加HTTP响应头response = HttpResponse() response["Strict-Transport-Security"] = "value"; 如果是python flask服务端,可以使用如下方式添加HTTP响应头response = make_response() response.headers["Strict-Transport-Security"] = "value"; (2)修改负载均衡或反向代理服务器,给HTTP响应头加上Strict-Transport-Security 如果使用Nginx、Tengine、Openresty等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP响应头:add_header Strict-Transport-Security value; 如果使用Apache作为代理服务器,在配置文件中写入如下内容即可添加HTTP响应头:Header add Strict-Transport-Security "value"
详细描述:Web 服务器对于 HTTP 请求的响应头中缺少 X-Download-Options,这将导致浏览器提供的安全特性失效。
漏洞危害:Web 服务器对于 HTTP 请求的响应头中缺少 X-Download-Options,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。
解决办法:
(1)修改服务端程序,给HTTP响应头加上X-Download-Options 如果是java服务端,可以使用如下方式添加HTTP响应头response.setHeader("X-Download-Options", "value"); 如果是php服务端,可以使用如下方式添加HTTP响应头header("X-Download-Options: value") ; 如果是asp服务端,可以使用如下方式添加HTTP响应头Response.AddHeader "X-Download-Options", "value"; 如果是python django服务端,可以使用如下方式添加HTTP响应头response = HttpResponse() response["X-Download-Options"] = "value"; 如果是python flask服务端,可以使用如下方式添加HTTP响应头response = make_response() response.headers["X-Download-Options"] = "value"; (2)修改负载均衡或反向代理服务器,给HTTP响应头加上X-Download-Options 如果使用Nginx、Tengine、Openresty等作为代理服务器,在配置文件中写入如下内容即可添加HTTP响应头:add_header X-Download-Options value; 如果使用Apache作为代理服务器,在配置文件中写入如下内容即可添加HTTP响应头Header add X-Download-Options "value"
详细描述:Web 服务器对于 HTTP 请求的响应头中缺少 Referrer-Policy,这将导致浏览器提供的安全特性失效。 当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息。但是也成为了一个不安全的因素,所以就有了 Referrer-Policy,用于过滤 Referrer 报头内容,其可选的项有:no-referrer no-referrer-when-downgrade origin origin-when-cross-origin same-origin strict-origin strict-origin-when-cross-origin unsafe-url
漏洞危害:Web 服务器对于 HTTP 请求的响应头中缺少 Referrer-Policy,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。
解决办法:
(1)修改服务端程序,给HTTP响应头加上Referrer-Policy 如果是java服务端,可以使用如下方式添加HTTP响应头response.setHeader("Referrer-Policy", "value"); 如果是php服务端,可以使用如下方式添加HTTP响应头header("Referrer-Policy: value") ; 如果是asp服务端,可以使用如下方式添加HTTP响应头Response.AddHeader "Referrer-Policy", "value"; 如果是python django服务端,可以使用如下方式添加HTTP响应头response = HttpResponse() response["Referrer-Policy"] = "value"; 如果是python flask服务端,可以使用如下方式添加HTTP响应头response = make_response() response.headers["Referrer-Policy"] = "value"; (2)修改负载均衡或反向代理服务器,给HTTP响应头加上Referrer-Policy 如果使用Nginx、Tengine、Openresty等作为代理服务器,在配置文件中写入如下内容即可添加HTTP响应头:add_header Referrer-Policy value; 如果使用Apache作为代理服务器,在配置文件中写入如下内容即可添加HTTP响应头:Header add Referrer-Policy "value"
详细描述:点击劫持(ClickJacking)是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。
漏洞危害:HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe 中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险。网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持。
解决办法:
修改web服务器配置,添加X-Frame-Options响应头。赋值有如下三种:
1、DENY:不能被嵌入到任何iframe或者frame中。
2、SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
3、ALLOW-FROM uri:只能被嵌入到指定域名的框架中。
例如:
apache可配置http.conf如下:
<IfModule headers_module> Header always append X-Frame-Options "DENY" </IfModule>
IIS可配置相关网站的Web.config如下:
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="deny" /> </customHeaders> </httpProtocol> ... </system.webServer>
二、IIS配置示例
Content-Security-Policy default-src 'self' X-XSS-Protection 1; mode=block Strict-Transport-Security max-age=31536000 Referrer-Policy origin-when-crossorigin X-Permitted-Cross-Domain-Policies master-only X-Download-Options noopen X-Frame-Options SAMEORIGIN X-Content-Type-Options nosniff