怕什麼真理無窮, 進一寸有一寸的歡喜
阿新 • • 發佈:2018-12-27
概述:常見的安全漏洞:
漏洞名稱 | 漏洞背景 | 避免方法 | 解決方案 |
CSRF(跨站請求偽裝) | 攻擊者誘導使用者點選連線,使用者瀏覽器攜帶cookie成功請求伺服器,造成使用者資訊丟失。 |
| spring-boot-security-csrf |
XSS(CSS,跨站指令碼攻擊) | 惡意攻擊者往web頁面插入惡意js程式碼,當用戶瀏覽時潛入的程式碼會被執行,從而控制使用者的瀏覽器。 |
| spring-boot-security-xss |
SQL注入 | 外部輸入引數在拼接時,沒有和資料庫語句做嚴格區分,導致攻擊者注入自定義的資料庫語句,從而非預期地操作資料庫。 | 預編譯sql語句。對mybatis而言,可用#{}代替${}。 | |
Jsonp劫持 | jsonp存在非法站點惡意呼叫、callback引數惡意新增標籤-XSS漏洞等問題。 |
| spring-boot-security-jsonp |
DoS攻擊 | 偽造請求,建立大量的半連線,使伺服器連線佇列滿,導致拒絕服務。 |
CSRF
XSS
<script>alert(“hey!you are attacked”)</script>
這樣,使用者在訪問此留言板時,就會彈出提醒框。XSS攻擊可以:竊取使用者cookie值,劫持流量向某個網頁跳轉等。可用:過濾特殊字元,使用HTTP頭指定型別解決。 框架解決方案是:Spring-security。Jsonp劫持
JSON是一種基於文字的資料交換方式,或者叫做資料描述格式。Jsonp用來跨域。一個眾所周知的問題,Ajax直接請求普通檔案存在跨域無許可權訪問的問題,甭管你是靜態頁面、動態網頁、web服務、WCF,只要是跨域請求,一律不準。另外:我們還發現凡是擁有"src"這個屬性的標籤都擁有跨域的能力,比如<script>、<img>、<iframe>。- 把跨域伺服器寫成 呼叫本地的函式 ,回撥資料回來不就好了?jsonp的核心則是動態新增<script>標籤來呼叫伺服器提供的js指令碼
- 首先是利用script標籤的src屬性來實現跨域。
- 通過將前端方法作為引數傳遞到伺服器端,然後由伺服器端注入引數之後再返回,實現伺服器端向客戶端通訊。
- 由於使用script標籤的src屬性,因此只支援get方法
jsonp存在非法站點惡意呼叫、callback引數惡意新增標籤-XSS漏洞等問題。 |
| spring-boot-security-jsonp |
SQL注入
漏洞背景
外部輸入引數沒有經過過濾,直接拼接到SQL語句中執行,沒有和資料庫語句做嚴格區分,導致攻擊者注入自定義的資料庫語句,從而非預期地操作資料庫。比如我們可以用 -- 來註釋查詢條件。select * from user where username = "zhangsan" and password = "..."利用引數拼接實現sql注入:select * from user where username = "zhangsan" and "1" = "1"-- and password =避免方法
預編譯sql語句。對mybatis而言,可用#{}
代替${}
。因為#{}
相當於JDBC的PreparedStatement,會對自動傳入的資料加一個雙引號;${}
是未經預編譯,僅取變數的值,非安全。