日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

服务器安全:浏览器同源策略与跨域请求、XSS攻击原理及防御策略、如何防御CSRF攻击

發布時間:2024/2/28 HTML 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器安全:浏览器同源策略与跨域请求、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
在瀏覽器指定服務來源(需要較新版本瀏覽器支持),服務器端設置好同源策略之后,就可以跨域請求了。

resp.setHeader("Access-Control-Allow-Origin", "*"); resp.setHeader("Access-Control-Allow-Headers", "*"); resp.setHeader("Access-Control-Allow-Methods", "*");

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也可能被偽造。

@Override public String intercept(ActionInvocation invocation) throws Exception { String referer = ServletActionContext.getRequest().getHeader("Referer"); if((referer!=null) && (referer.trim().startsWith(Constants.HTTP + Constants.domainName))){ return invocation.invoke(); } return "error"; }

方式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攻击的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。