服务器安全:浏览器同源策略与跨域请求、XSS攻击原理及防御策略、如何防御CSRF攻击
主要包括
- 瀏覽器同源策略與跨域請求
- XSS攻擊原理及防御策略
- 如何使用SpringSecurity防御CSRF攻擊
- CC/DDOS攻擊與流量攻擊
- 什么是SSL TLS HTTPS?
一、瀏覽器的同源策略
請求方式:HTTP,HTTPS,Socket等
HTTP請求特點:無狀態。
想要保持狀態的話,需要服務器下發token/cookie到瀏覽器,在服務器端存的是session
服務端與客戶端要建立會話:
瀏覽器的同源策略
同源策略:當訪問同一域名下的所有子URI時,不需要重新登錄。
所謂的同源是指:1.協議相同 2.域名相同 3.端口相同
什么是跨域請求?不同源的請求,就是跨域請求。
1.http://test/和https://test/協議不同,不同源
2.http://test/和http://www.test/二級域名不同,不同源
3.http://test:8080/和http://test/端口號不同,不同源
瀏覽器允許跨域的請求
頁面中的一些標簽是不做同源限制的,比如<img> <script> <style>等標簽,這些標簽里的src地址可以與當前頁不同源。
瀏覽器不允許跨域的請求
js里用js發起的post/load等請求,瀏覽器不允許跨域。
解決方法:
1、CORS
在瀏覽器指定服務來源(需要較新版本瀏覽器支持),服務器端設置好同源策略之后,就可以跨域請求了。
2、JSONp
底層原理:
js或者ajax在瀏覽器中已經被禁止掉了,但是可以通過
<script src="遠程服務器/xx.js">引用一個js文件來實現
- 準備一個真正的js文件
- 通過動態的方式,映射地址
拿到遠程js后,用callback函數寫渲染邏輯
jsonp只能<script src='...'>,因此只能使用get請求
二、XSS攻擊原理及防御措施
富文本編輯器的外鏈圖片功能,如果不防御XSS攻擊,可以填入一個www.fakepic?id=fake.jpg,每次訪問這個富文本頁面,因為文本中添加了別的網站資源連接地址,所以自動發送了請求。
XSS最簡單理解是: 不可信的內容被瀏覽器渲染執行了
例如,百度開源的UEditor:
被填入的站點www.fakepic帶來的好處:增加了流量,帶來的壞處:流量過大會崩(同行競爭、敲詐勒索)
而富文本編輯器所在的網站不會被影響
XSS攻擊的目的:流量攻擊
防御方式:禁止外站引用、限流、資源對抗(加貸款)、大數據+AI(360在做這個服務,也是分析IP)
三、CSRF
CSRF跨站請求偽造:多標簽瀏覽器,誘導進入假網站,假網站能拿到已登錄頁面的cookie,從而向真網站發送偽造的扣款請求
避免CSRF攻擊的方式:
方式1
全站均使用post請求,不用get請求。(<img src="...">等可以跨域的瀏覽器標簽只能發送get請求,而如果想發送post請求,需要用js實現,js不能發送跨域請求)
方式2
后臺過濾Referer,也就是校驗Referer頭,禁止跨站請求,但是Referer也可能被偽造。
方式3
在表單中增加一個隨機的數字或字母驗證碼,通過強制用戶和應用進行交互,來有效地遏制CSRF攻擊。
方式4:使用token
參考:CSDN博客 - 跨域post及使用token防止csrf攻擊
在 HTTP 請求中以參數的形式加入一個隨機產生的 token,并在服務器端建立一個攔截器來驗證這個 token,如果請求中沒有 token 或者 token 內容不正確,則認為可能是 CSRF 攻擊而拒絕該請求。
在站內頁面上head中,增加token
<meta name="csrf-token" content="{{ csrf_token() }}">配置angular提交表頭
app.config(function ($httpProvider) {$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content'); });敏感的操作應該使用POST,而不是GET,以form表單的形式提交,可以避免token泄露。
總結
以上是生活随笔為你收集整理的服务器安全:浏览器同源策略与跨域请求、XSS攻击原理及防御策略、如何防御CSRF攻击的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【MySQL】触发器:让指定某一字段的值
- 下一篇: 响应式web(一):什么是响应式web,