当前位置: 首页 > Web前端 > HTML5

前端必须知道的HTTP安全头配置

时间:2023-04-05 15:56:57 HTML5

本文将介绍常用的安全头信息设置,并举例说明。在本文的结尾,我将介绍常见应用程序和Web服务器的安全标头设置示例。Content-Security-Policy内容安全策略(CSP)通常用于通过指定允许加载哪些资源来防止跨站点脚本攻击。在接下来描述的所有安全标头中,CSP可能是创建和维护最耗时且最容易出现问题的。配置您网站的CSP时,请小心彻底测试它,因为阻止某些资源可能会破坏您网站的功能。FunctionalCSP的主要目标是减轻和报告利用浏览器对从服务器获取的内容的信任的XSS攻击。这使得恶意脚本有可能在用户的浏览器中执行,因为浏览器信任其内容的来源,即使脚本有时并非来自站点的服务器。CSP通过指定允许浏览器加载和执行哪些资源,使服务器管理员能够减少或消除XSS攻击的可能性。符合CSP的浏览器将只执行从白名单域中获取的脚本文件,而忽略所有其他脚本(包括内联脚本)。最佳CSP的示例可能如下(按配置值的顺序注释),其中域限制被添加到与站点关联的资源请求的每个部分。#所有内容(例如:JavaScript、图像、css、字体、ajax请求、frams、html5媒体等)来自与站点相同的来源(不包括其子域)#允许从当前来源和特定来源加载图像images#不允许对象(例如Flash和Java)#只允许从当前源下载脚本并执行#只允许从当前源下载和执行CSS文件#只允许从当前源下载帧#限制URL在标签到当前站点同源#只允许表单提交到当前站点Content-Security-Policy:default-src'self';img-src'自我'https://img.com;对象源“无”;脚本源“自我”;样式源“自我”;框架祖先“自我”;base-uri“自我”;形式动作“自我”;更详细的CSP介绍见https://content-security-poli...Strict-Transport-SecurityStrict-Transport-Security(HSTS)告诉浏览器该站点只能通过HTTPS访问,也推荐给如果使用了网站的任何子域,则强制执行此操作。功能如果一个站点接受了一个HTTP请求,然后跳转到HTTPS,用户可能会在开始跳转之前以不加密的方式与服务器对话。这种方式存在中间人攻击的潜在威胁,重定向过程可能被恶意网站用来直接访问用户信息而不是原始加密信息。网站通过HTTPStrictTransportSecurity通知浏览器禁止使用HTTP加载本网站,浏览器应自动将所有尝试使用HTTP的请求替换为HTTPS请求。例子#在浏览器收到这个请求后的3600秒内,所有访问这个域名的请求都是用https请求的#指定includeSubDomains这个规则适用于这个站点下的所有子域名Strict-Transport-Security:max-age=3600;includeSubDomainsX-Content-Type-OptionsX-Content-Type-Options响应头相当于一个提示标志,用于提醒服务器用户浏览器必须遵循Content-Type头中的MIME类型设置。而不是修改它。它减少了浏览器可能“猜测”错误的意外应用程序行为,例如当开发人员将页面标记为“HTML”但浏览器认为它看起来像JavaScript并尝试将其呈现为JavaScript时。此标头将确保浏览器始终解释服务器设置的MIME类型。ExampleX-Content-Type-Options:nosniffCache-ControlCache-Control通用消息头字段用于通过在http请求和响应中指定指令来实现缓存机制。缓存指令是单向的,这意味着请求中设置的指令不一定包含在响应中。功能这个比其他的稍微复杂一些,因为您可能需要对不同的内容类型使用不同的缓存策略。任何包含敏感信息的网页,例如用户个人资料页面或客户结帐页面,都应设置为无缓存。原因是为了防止共享计算机上的某人按下后退按钮或浏览历史记录和查看个人信息。Cache-Control示例:no-cacheX-Frame-OptionsX-Frame-Options响应标头是一个标记,用于向浏览器指示页面是否允许在、