网站首页 > 技术文章 正文
在年初的时候全国性的安全扫描,检测出了我公司系统的一些安全漏洞。之前在群里也有人问这些响应头怎么配置。今天正好把之前梳理的一些发布出来方便自己也方便他人使用。
X-Frame-Options
该响应头中用于控制是否在浏览器中显示frame或iframe中指定的页面,主要用来防止Clickjacking(点击劫持)攻击。
X-Frame-Options: SAMEORIGIN
- DENY 禁止显示frame内的页面(即使是同一网站内的页面)
- SAMEORIGIN 允许在frame内显示来自同一网站的页面,禁止显示来自其他网站的页面
- ALLOW-FROM origin_uri允许在frame内显示来自指定uri的页面(当允许显示来自于指定网站的页面时使用)
X-Content-Type-Options
如果从script或stylesheet读入的文件的MIME类型与指定MIME类型不匹配,不允许读取该文件。用于防止XSS等跨站脚本攻击。
X-Frame-Options: nosniff
X-XSS-Protection
用于启用浏览器的XSS过滤功能,以防止XSS跨站脚本攻击。
X-XSS-Protection: 1; mode=block
- 0 禁用XSS过滤功能
- 1 启用XSS过滤功能
Content-Security-Policy
用于控制当外部资源不可信赖时不被读取。用于防止XSS跨站脚本攻击或数据注入攻击(但是,如果设定不当,则网站中的部分脚本代码有可能失效)。
之前的字段名为X-Content-Security-Policy
Content-Security-Policy: default-src 'self'
- default-src 'self' 允许读取来自于同源(域名+主机+端口号)的所有内容
- default-src 'self' *.example.com允许读取来自于指定域名及其所有子域名的所有内容
- 该响应头的配置参数很多,详细的可以看看官网https://content-security-policy.com/ 有详细的解释
X-Permitted-Cross-Domain-Policies
用于指定当不能将“crossdomain.xml”文件(当需要从别的域名中的某个文件中读取Flash内容时用于进行必要设置的策略文件)放置在网站根目录等场合时采取的替代策略。
X-Permitted-Cross-Domain-Policies: master-only
- master-only 只允许使用主策略文件(/crossdomain.xml)
Strict-Transport-Security
用于通知浏览器只能使用HTTPS协议访问网站。用于将HTTP网站重定向到HTTPS网站。
Strict-Transport-Security: max-age=31536000; includeSubDomains
- max-age 用于修改STS的默认有效时间。
- includeSubDomains 用于指定所有子域名同样使用该策略。
Access-Control-Allow-Origin等CORS相关字段
当使用XMLHttpRequest从其他域名中获取资源进行跨域通信时使用。
Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-TRICORDER
Access-Control-Max-Age: 1728000
上述代码用于设定与“http://www.example.com”进行跨域通信处理,允许使用POST, GET, OPTIONS方法,在发送的请求头中添加X-TRICORDER字段,通信超时时间为1,728,00秒。
X-Download-Options
用于放置直接打开用户下载文件。
X-Download-Options: noopen
- noopen 用于指定IE 8以上版本的用户不打开文件而直接保存文件。在下载对话框中不显示“打开”选项。
Set-Cookie
用于设置Cookie。
Set-Cookie: name=value; secure; HttpOnly
- secure 只在进行HTTP通信时发送Cookie。
- HttpOnly 指定不能从JavaScript脚本代码访问Cookie值。
- 虽然path属性用于指定Cooki发送路径,但是不能被作为一种安全手段。
- domain属性具有后方一致特性,出于安全考虑最好不要使用该属性,除非明确指定向多个域发送Cookie。
Cache-Control
指定浏览器的缓存方式,通过逗号分隔。
Cache-Control: no-cache, no-store, must-revalidate
- no-cache 指定服务器端不缓存数据。
- no-store 指定不能在本地缓存中保存数据。
- must-revalidate 指定服务器端可以缓存数据,但是必须对数据进行确认。
pragma
用于与HTTP/1.0进行向后兼容的响应头字段,原本只被使用在客户端请求头中。与“Cache-Control: no-cache”结合使用。
pragma: no-cache
- no-cache 客户端要求所有中间服务器不能缓存数据。
expires
指定数据的有效时间。不希望缓存数据时可以将该字段值与Date字段值指定为相同值或者将该字段值指定为“-1”。
expires: -1
content-type
指定实体内对象的媒体类型(MediaType)。在charset关键字中指定文字编码格式。
content-type: text/html;charset=utf-8
HTTP响应头的设定方法
在Apache服务器中指定响应头时,需要在httpd.conf文件中将下述模块设定为有效状态。
- LoadModule headers_module modules/mod_headers.so
然后使用下述方法设定HTTP响应头。
Header set HeaderFieldName "value"
//例如
Header set X-XSS-Protection "1; mode=block”
猜你喜欢
- 2025-07-09 跨域资源的共享(CORS)N种用法(跨域资源共享的缩写是?)
- 2025-07-09 Axios CORS 问题处理(axios has been blocked by cors policy)
- 2025-07-09 JavaScript-JavaScript 219
- 2025-07-09 前端面试题《AJAX》(前端面试题js)
- 2025-07-09 某水果网站逆向分析(水果销售网站的设计与实现)
- 2025-07-09 揭秘:视频播放网站如何精准记录用户观看进度
- 2025-07-09 国外友人开创Python模拟登陆神库,完美修改它为咱们所用
- 2025-07-09 Ajax异步JavaScript和XML(ajax异步原理)
- 2025-07-09 2021年超详细的java学习路线总结—纯干货分享
- 2025-07-09 webapi 全流程(webapi怎么部署)
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 534℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 496℃MySQL service启动脚本浅析(r12笔记第59天)
- 475℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 473℃启用MySQL查询缓存(mysql8.0查询缓存)
- 453℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 432℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 430℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)