请问如何查找个人信息(如何查寻个人信息)
1354
2022-05-30
Spring Security配置内容安全策略
1、什么是内容安全策略?
内容安全策略:Content Security Policy,简称CSP,内容安全策略是一种安全机制,开发着可以通过HTTP 响应标头,可显著减少现代浏览器中的 XSS、Clickjacking 等代码注入攻击。CSP通过W3C WebApplication Security Working Group发布标准
标准语法:
Content-Security-Policy:
例子:
Content-Security-Policy:script-src 'self' 'unsafe-inline' 'unsafe-eval';style-src 'self' 'unsafe-inline';img-src 'self' data:;connect-src 'self' http://www.baidu.com http://127.0.0.1:8080 data:;font-src 'self';object-src 'self';
2、CSP有哪些选项?
CSP1.0主要提供了这些选项的配置:
default-src:为其余指令设置默认源列表。如果其它指令没设置,就用default-src的默认配置
script-src:为JavaScript一些脚本配置安全策略
object-src:这里一般指Flash或者一些Java插件等等
style-src:css样式
img-src:图片
media-src:媒体文件(音频和视频)
frame-src:嵌入的外部资源(比如、等等)
font-src:字体文件
connect-src:HTTP 连接(通过 XHR、WebSockets、EventSource等)
CSP2.0:新增的一些主要选项
base-uri:控制是否允许文档操作页面的基本 URI。
child-src:替换frame-src.
form-action:控制文档提交 HTML 表单的能力。
frame-ancestors:像 X-Frame-Options 标题一样工作,通过控制如何将此文档嵌入到其他文档中。
plugin-types:控制页面可以加载哪些特定插件,例如 Flash、Java、Silverlight 等。
所有指令都遵循相同的模式:
self用于引用当前域
可以在空格分隔的列表中指定一个或多个 URL,一般是一些域名或者ip加端口
none表示不应为给定指令加载任何内容,例如object-src 'none’表示不应加载任何插件(如 Flash 或 Java)。
例子:
Content-Security-Policy:script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’;style-src ‘self’ ‘unsafe-inline’;img-src ‘self’ data:;connect-src ‘self’ http://www.baidu.com http://127.0.0.1:8080 data:;font-src ‘self’;object-src ‘self’;
3、设置CSP方法
前端页面设置,前端页面通过设置meta 标签
后端设置,设置response的header
public void setResponseHeader(HttpServletRequest request,HttpServletResponse response) { //内容安全策略 response.setHeader("Content-Security-Policy", "script-src 'self' 'unsafe-inline' 'unsafe-eval';style-src 'self' 'unsafe-inline';img-src 'self' data:;connect-src 'self' http://www.baidu.com http://127.0.0.1:8080 data:;font-src 'self';object-src 'self';"); }
4、Spring Security设置CSP
有了前面的基础知识后,我们可以新建一个Spring Security项目来实践:
开发环境
JDK 1.8
SpringBoot2.2.1
Maven 3.2+
开发工具
IntelliJ IDEA
smartGit
Navicat15
在IDEA里集成阿里的https://start.aliyun.com,创建一个Spring Initializr项目:
选择jdk版本,和maven打包方式
项目主要的maven配置:
spring-boot-starter-security:springboot集成的spring security starter
spring-boot-starter-web:web相关的starter
spring-boot-starter-thymeleaf:使用thymeleaf在前面页面渲染
加一个简单的登录页面: