当前位置: 首页 > wzjs >正文

小网站百度电话号码查询

小网站,百度电话号码查询,网站商城系统,做分类信息网站代码CORS解决方案汇总 Cors介绍 Cors全称"跨域资源共享"(Cross-origin resource sharing),Cors的出现是用来弥补SOP(同源策略)的不足。在当时SOP有些限制了网页的业务需求,不能够使不同域的网页互相…

CORS解决方案汇总

Cors介绍

Cors全称"跨域资源共享"(Cross-origin resource sharing),Cors的出现是用来弥补SOP(同源策略)的不足。在当时SOP有些限制了网页的业务需求,不能够使不同域的网页互相访问,因此提出了Cors:用于绕过SOP(同源策略)来实现跨域资源访问的一种技术。

Cors漏洞就是攻击者利用Cors技术来获取用户的敏感数据,从而导致用户敏感信息泄露。
漏洞验证方法

curl -vv -H "Origin: http://hack 你的域名 " h t t p : / / {你的域名}" http:// 你的域名"http://{你的域名}

例如:curl -vv -H “Origin: http://hackbaidu.com” http://xxxx.baidu.com

然后观察ACCESS-CONTROL-ALLOW-ORIGIN设置内容:

如果Access-Control-Allow-Origin返回了*或http://hackbaidu.com,则存在漏洞;如果未返回Access-Control-Allow-Origin头,则不存在漏洞;

漏洞修复方法-代码篇

  1. 对单个controller进行设置

    示例代码,如下:

import com.xili.security.SecurityUtil;
import ......//备注:此方案只能使用在需要跨域的mapping上,若不需要跨域,请不要设置跨域
//仅适用于需要跨域的接口,否则会因为获取不到origin导致业务无法正常访问
//方案一: 在此设置允许跨站的域名, 不允许使用通配符配置
// 如果按照这种方式配置仍然有漏洞,必定是你用通配符做了origins设置,并且该通配符可被绕过
@CrossOrigin(origins = {"http://localhost:9000", "http://www.baidu.com"})
@RequestMapping("/testCors.do")public @ResponseBody  String CORSTest(HttpServletRequest request,HttpServletResponse response) {String map = "no_pass";String origin = request.getHeader("Origin");   // 方案二: 在此获取origin,对origin来源进行判断if(origin != null){String safeOrigin = SecurityUtil.getSafeUrl(origin); if(safeOrigin != null){map = "pass";((HttpServletResponse) res).setHeader("Access-Control-Allow-Origin", safeOrigin);((HttpServletResponse) res).setContentType("application/json;charset=UTF-8");((HttpServletResponse) res).setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");((HttpServletResponse) res).setHeader("Access-Control-Max-Age", "3600");((HttpServletResponse) res).setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");//表明服务器支持的所有头信息字段((HttpServletResponse) res).setHeader("Access-Control-Allow-Credentials", "true"); //如果要把Cookie发到服务器,需要指定Access-Control-Allow-Credentials字段为true;((HttpServletResponse) res).setHeader("XDomainRequestAllowed","1");}else{map = "checked_no_pass"}}else{map = "pass"; //若某接口开启cors,并确实是在跨域访问,肯定会有origin。//没有origin的情况只有在同域访问时才会出现,此时无任意cors访问风险,所以通过}return map;}

一般CORS和jsnop接口不开放给外部进行调用,白名单内只设置企业内部域名
2. 对所有controller进行设置
方式一. 使用Java bean注解进行配置
研发自己编写bean,在配置文件中进行域设置。并通过configuration/bean等注解注册到上下文中

示例代码如下:
@Configuration
public class MyConfiguration {@Beanpublic FilterRegistrationBean corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true);//你允许跨域的域名,不允许设置为『*』,可以设置的pattern有: (具体域名不用任何通配符, *.test.com一级域名不能被统配)config.addAllowedOrigin("http://domain1.com");  』config.addAllowedHeader("*");config.addAllowedMethod("*");source.registerCorsConfiguration("/**", config);FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));bean.setOrder(0);return bean;}
}

方式二. 使用XML进行配置

<!-- support cors-->
<filter><filter-name>CorsFilter</filter-name><filter-class>org.apache.catalina.filters.CorsFilter</filter-class><init-param><param-name>cors.allowed.headers</param-name><param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,xsrf-token</param-value></init-param>
</filter>
<filter-mapping><filter-name>CorsFilter</filter-name>//你允许跨域的域名,不允许设置为『*』,可以设置的pattern有: (具体域名不用任何通配符, *.test.com一级域名不能被统配)<url-pattern>www.test.com</url-pattern>
</filter-mapping>

漏洞修复方法-nginx配置篇

在笔者实践过程中,大部分cors的场景确实可以通过代码进行一部分修复,但是有的场景明明代码通过检测是不存在cors问题的。在实际黑盒测试的过程中发现依然可以检测出问题,现在大部分工程都是前后端分离,且在企业级生产应用中都是增加了 Nginx 进行代理和路由,较多的一种场景是因为nginx上配置了跨域策略。

nginx上多域名白名单的配置示例如下:

set $cors_origin "";if ($http_origin ~* "^http://127.0.0.1$") {set $cors_origin $http_origin;}if ($http_origin ~* "^http://localhost$") {set $cors_origin $http_origin;}add_header Access-Control-Allow-Origin $cors_origin;location / {if ($request_method = 'OPTIONS') {add_header Access-Control-Allow-Origin $cors_origin;add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;return 204;}

白名单原则如上文所述,然后回答之前为什么代码没扫描出来漏洞的原因,因为对于在代码中未设置Access-Control-Allow-Origin的则扫描引擎认为未允许跨域,没有风险,但nginx配置上加上了允许任意访问的值,所以黑盒测试出现问题。这也很好的印证了需要黑白盒交叉测试才能保证安全水位的道理。

需要补充的是,有同学会觉得我白+黑更安全,nginx和代码中都进行cors的安全配置是不是双保险?大部分场景下sdl实践是推崇多级防御的,遗憾的是,该场景下却适得其反

当 nginx 和后端同时配置跨域配置后,会导致跨域配置失败,浏览器报错如下图所示
在这里插入图片描述
打开F12会发现,返回的 response 头里有两个Access-Control-Allow-Origin.也就是说,只使用 Nginx 或者后端或者其他方式进行控制跨域,不要两边都配置。

  • 漏洞修复方法-yaml配置篇

现在很多企业已经上云和使用虚拟化技术,相当多的应用部署在容器内。以笔者遇到过的K8S集群部署为例,上文中的nginx配置需要写在ingress的yaml里,这里也给一个示例:(加入一个lua脚本来支持正则匹配test.com)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: example-ingressannotations:nginx.ingress.kubernetes.io/rewrite-target: /# 添加lua脚本片段nginx.ingress.kubernetes.io/configuration-snippet: |set $allow_cors "";if ($http_origin ~ "^https?://([a-zA-Z0-9.-]+\.)?test\.com(:\d+)?$") {set $allow_cors "true";}more_set_headers 'Access-Control-Allow-Origin: $allow_cors';
spec:rules:- host: your.host.example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: your-service-nameport:name: http

在rancher中可以进行简单的图形化输入脚本,保存后即时生效

  • 跨域简单测试方案

最后补充一个跨域的简单测试方案,对于粗放型设置企业内全部域名为白名单的情况可以忽略,对于需要精细化控制cors白名单又怕影响到业务,一定要仔细的测试资源能否被正确的跨域调用:

进入浏览器开发者控制台,在控制台输入如下请求,接口地址更改为所需要检测的地址

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.xxx.com/api/action');
xhr.send(null);
xhr.onload = function(e) {var xhr = e.target;console.log(xhr.responseText);
}

在这里插入图片描述
当出现该报错意味着网络不通。。因为xxx.com是随便写的无效地址所以请求超时
在这里插入图片描述当支持跨域时会正常返回
在这里插入图片描述
当不支持跨域时会返回该内容

http://www.dtcms.com/wzjs/410012.html

相关文章:

  • 台州网站制作网页网站域名备案信息查询
  • 建筑工程网cnas广东seo推广外包
  • 做计量检定的网站seo排名优化公司
  • 网站导航面包屑公司推广方法有哪些
  • 佛山网站建设多少钱网站广告策划
  • 兼职做页面的网站企拓客app骗局
  • 保洁产品网站建设价格搜索引擎竞价推广的优势
  • 做网站如何与网络公司沟通建站教程
  • 福建微网站建设百度网络营销app
  • 服务器安全卫士网站搜索引擎优化
  • 四川住房和建设厅网站关键词林俊杰百度云
  • 做网站的市场典型的口碑营销案例
  • 政协信息化网站建设的请示百合seo培训
  • wordpress首页不显示指定分类seo整体优化步骤怎么写
  • 重庆网站建设网络推广百度免费注册
  • 求一个手机能看的2022搜索引擎seo优化怎么做
  • 厦门做点击付费网站百度账号申请注册
  • 17网站一起做网店登录武汉百度信息流广告
  • 网站制作首选 新鸿儒nba篮网最新消息
  • 全网网站百度指数如何分析数据
  • 怎样在手机上制作网站宁波如何做抖音seo搜索优化
  • 工业软件开发公司seo新站如何快速排名
  • 张氏万家网站建设外呼系统电销
  • 建设网站需要的编程网站seo关键词排名查询
  • 个人网站 备案 攻略扬州网站seo
  • 什么做的网站推广营销渠道策略
  • 介绍自己做的电影网站公司怎么推广网络营销
  • 广东省企网站建设seo排名点击 seo查询
  • 电子商务网站建设教程试卷百度竞价托管外包代运营
  • 网站建设报价网站建设报价单博客可以做seo吗