当前位置:网站首页>Web Security (1) -- browser homology strategy
Web Security (1) -- browser homology strategy
2020-11-07 20:56:00 【Coxhuang】
List of articles
- Web Security ( One ) --- Browser homology strategy
- #1 What is browser homology strategy
- #1.1 What is homology ?
- #1.2 Restriction of homologous strategy
-
- #1.2.1 Can't read or write Cookie、Session Storage、Local Storage、Cache、Indexed DB
- #1.2.2 DOM
- #1.2.3 Asynchronous requests
- #2 Cross domain
- #2.1 Solutions to cross domain problems
- #2.2 Cross-domain resource sharing (CORS)
- # CORS How to carry Cookie
- #2.3 Nginx Reverse proxy
- #1 What is browser homology strategy
Web Security ( One ) — Browser homology strategy
#1 What is browser homology strategy
Browser's homology strategy has always been a common problem in development , It is the core and basic security function of browser , If the same origin policy is missing , The normal function of the browser will be affected
#1.1 What is homology ?
Homology means the same agreement
、 Same as domain name
、 Same port
.
notes :IE No
Port number
Add to the components of the same source strategy
In the browser , <script>
、<img>
、<iframe>
、<link>
All tags can be loaded across domains , And not limited by the browser's same origin policy , These tapes src
Every time the tag of the property is loaded , It's actually launched by the browser once GET request , Different from normal requests (XMLHTTPRequest) Yes. , adopt src Property loaded resources , Browsers limit JavaScript Authority , Make it unreadable src Load the returned content
Browser homology strategy , In addition to the above tags can be loaded across domains , When other cross domain requests occur , The request is sent to a cross domain server , And the server will return data , It's just a browser " Rejection " Returned data
#1.2 Restriction of homologous strategy
The same source strategy of browser aims to protect the information security of users , In order to prevent malicious websites from stealing users' data in the browser , If It's not homologous
The site of , The following operations will not be possible :
- Cookie、LocalStorage and IndexDB Unable to read and write
- DOM and Js Object can't get
- AJAX Request cannot be sent
#1.2.1 Can't read or write Cookie、Session Storage、Local Storage、Cache、Indexed DB
Users log in to a site , After the site back-end server verifies that the account password is correct , Returns the Cookie、Token Or the user name and password to the client browser , The browser will save this personal data to Cookie、Session Storage、Local Storage、Cache、Indexed DB One of them ( How to save it , It's up to the website developer ), If the browser doesn't have the same origin policy , When a user visits a malicious website , Malicious websites can get users' data through scripts , This is extremely unsafe behavior
So if it's not homologous , Can't read and write other site settings Cookie、Session Storage、Local Storage、Cache、Indexed DB
#1.2.2 DOM
From a source js You can only read and write from your own source DOM Trees cannot read from other sources DOM Trees
#1.2.3 Asynchronous requests
Generally speaking, from one source js You can only send requests to your own source interface , Cannot send requests to interfaces from other sources . Of course, the essence is , On the one hand, the browser finds a source of js When sending a request to an interface of another source, it will automatically bring Origin The header identifies the source from , Let the server pass through Origin Judge whether to respond to ; On the other hand , If the browser does not find Access-Control-Allow-Origin The domain that sends the request is allowed to request, and that does not allow parsing
#2 Cross domain
Access between different domains is called cross domain , Because of the limitation of the same origin policy , That leads us to communicate between different sources , There is a problem that the browser cannot accept the data returned by the server , This is also the problem that must be solved in the project of separating the front end from the back end
#2.1 Solutions to cross domain problems
- adopt jsonp Cross domain
- document.domain + iframe Cross domain
- location.hash + iframe
- window.name + iframe Cross domain
- postMessage Cross domain
- Cross-domain resource sharing (CORS)
- Nginx Reverse proxy
- nodejs Middleware agent cross domain
- WebSocket Protocol cross domain
The following is mainly about two common methods I usually use to solve cross domain problems CORS and Nginx Reverse proxy
#2.2 Cross-domain resource sharing (CORS)
Only server settings Access-Control-Allow-Origin that will do , There is no need to set the front end , To bring cookie request : Both front and rear ends need to be set .
- The server needs to set the following response header
Access-Control-Allow-Origin:http://www.admin.minhung.me // General usage (*, Specify domain , Dynamic setting ),* It is not allowed to carry the authentication head and cookies Access-Control-Allow-Credentials: true // Whether to allow subsequent requests to carry authentication information ( Such as :cookies), The value can only be true, Otherwise do not return Access-Control-Max-Age: 1800 // Pre check result cache time , This is the cache mentioned above , Company : second Access-Control-Allow-Methods:GET,POST,PUT,POST // Allow request verb , GET|POST|PUT|DELETE Access-Control-Allow-Headers:x-requested-with,content-type // Allowed request header fields
# CORS How to carry Cookie
If you use CORS Solving cross domain problems , In addition to the back-end server needs to configure the above information , The front end also needs to be configured as follows :
// Indicates whether credentials are required for cross domain requests axios.defaults.withCredentials = true // Vue.js frame
also , Back end server cannot be configured Access-Control-Allow-Origin: *, Remember that , If configured to any , No matter withCredentials Is there any setting ,cookie I can't take it with me
#2.3 Nginx Reverse proxy
adopt nginx Configure a proxy server ( Domain name is different from port number and client ) For detecting , Reverse proxy access api.minhung.me Interface , And it can be modified incidentally cookie in admin.minhung.me Information , Convenient current field cookie write in , Implement cross-domain login .
The front-end project (admin.minhung.me:19700)
The back-end project (api.minhung.me:19800)
In front end projects nginx Add in configuration proxy_pass, Proxy the requested interface to api.minhung.me:19800
# front end nginx To configure server { listen 19700; server_name admin.minhung.me; location / { proxy_pass http://api.minhung.me:19800; # Reverse proxy proxy_cookie_domain api.minhung.me:19800 admin.minhung.me:19700; # modify cookie In the domain name index index.html index.htm; } }
Participation of this paper Tencent cloud media sharing plan , You are welcome to join us , share .
版权声明
本文为[Coxhuang]所创,转载请带上原文链接,感谢
边栏推荐
- Exploration and practice of growingio responsive programming
- Cpp(三) 什么是CMake
- 聊一聊数据库中的锁
- Insight -- the application of sanet in arbitrary style transfer
- Summary of the resumption of a 618 promotion project
- 看一遍就理解,图解单链表反转
- What magic things can a line of Python code do?
- Cpp(二) 创建Cpp工程
- Share several vs Code plug-ins I use everyday
- 一万四千字分布式事务原理解析,全部掌握你还怕面试被问?
猜你喜欢
随机推荐
关于晋升全栈工程师,从入门到放弃的神功秘籍,不点进来看一看?
graph generation model
Code Review最佳实践
AC86U kx上网
Do not understand the underlying principle of database index? That's because you don't have a B tree in your heart
Sentry 安装
如何应对事关业务生死的数据泄露和删改?
Annual salary of 900000 programmers is not as good as 3800 civil servants a month? How to choose between stability and high income?
栈-括号的匹配
小熊派开发板实践:智慧路灯沙箱实验之真实设备接入
Python 图片识别 OCR
面部识别:攻击类型和反欺骗技术
统计文本中字母的频次(不区分大小写)
是时候结束 BERTology了
Count the frequency of letters in text (case insensitive)
graph generation model
Three steps, one pit, five steps and one thunder, how to lead the technical team under the rapid growth?
洞察——风格注意力网络(SANet)在任意风格迁移中的应用
WPF 关于绘图个人总结
C language I blog assignment 03