讓你徹底了解SQL注入 XSS和CSRF

2021-09-11 07:10:12 字數 1255 閱讀 1519

相信大家在各種技術文章都看到過sql注入、xss和csrf這三個名詞,但是我覺得有一部分人可能並不清楚這三個詞的真正含義。接下來,我就說下這三個名詞的含義,希望對大家能有所幫助。

sql注入

sql注入是屬於注入式攻擊,這種攻擊是因為在專案中沒有將**與資料(比如使用者敏感資料)隔離,在讀取資料的時候,錯誤的將資料作為**的一部分執行而導致的。

典型的例子就是當對sql語句進行字串拼接的時候,直接使用未轉義的使用者輸入內容作為變數。這時,只要在sql語句的中間做修改,比如加上drop、delete等關鍵字,執行之後後果不堪設想。

說到這裡,那麼該怎麼處理這種情況呢?三個方面:

1、過濾使用者輸入引數中的特殊字元,降低風險。

2、禁止通過字串拼接sql語句,要嚴格使用引數繫結來傳入引數。

3、合理使用資料庫框架提供的機制。就比如mybatis提供的傳入引數的方式 #{},禁止使用${},後者相當於是字串拼接sql,要使用引數化的語句。

總結下,就是要正確使用引數化繫結sql變數。

xssxss:跨站指令碼攻擊,cross-site scripting,為了和前端的css避免重名,簡稱為xss,是指通過技術手段,向正常使用者請求的html頁面中插入惡意指令碼,執行。

這種攻擊主要是用於資訊竊取和破壞等目的。比如2023年的微博xss攻擊事件,攻擊者利用了微博發布功能中未對action-data漏洞做有效的過濾,在發布微博資訊的時候帶上了包含攻擊指令碼的url,使用者訪問就會載入惡意指令碼,導致大量使用者被攻擊。

關於防範xss上,主要就是通過對使用者輸入的資料做過濾或者是轉義,可以使用框架提供的工具類htmlutil。另外前端在瀏覽器展示資料的時候,要使用安全的api展示資料。比如使用innertext而不是innerhtml。

csrf

跨站請求偽造,在使用者並不知情的情況下,冒充使用者傳送請求,在當前已經登入的web**上執行惡意操作,比如惡意發帖,修改密碼等。

大致來看,與xss有重合的地方,前者是黑客盜用使用者瀏覽器中的登入資訊,冒充使用者去執行操作。後者是在正常使用者請求的html中放入惡意**,xss問題出在使用者資料沒有轉義,過濾;csrf問題出現在http介面沒有防範不守信用的呼叫。

防範csrf的漏洞方式:

1、csrf token驗證,利用瀏覽器的同源限制,在http介面執行前驗證cookie中的token,驗證通過才會繼續執行請求。

2、人機互動,例如簡訊驗證碼、介面的滑塊。

這樣的分享會一直持續,你的關注,點讚是對我最大的支援,感謝。

每乙個努力認真生活的人都是自己的船長,關注我,我們一起乘風破浪。

XSS和SQL注入

單引號 用於指示字串型資料 見select 逗號 分割相同的項 見select 2 kali使用beef生成惡意 5 回答問題 實驗中xss攻擊屬於哪種型別?反射型xss 實驗環境搭建。啟動metasploitable2虛擬機器。1 注入點發現。首先肯定是要判斷是否有注入漏洞。在輸入框輸入1,返回 ...

sql注入和xss攻擊

sql注入 就是通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。具體來說,它是利用現有應用程式,將 惡意的 sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,而不...

防止SQL注入和XSS注入的方法總結

1 在openresty中新增naxsi加強防禦安裝方法 2 防止sql注入的思路和方法1.永遠不要信任使用者的輸入。對使用者的輸入進行校驗,可以通過正規表示式,或限制長度 對單引號和 雙 進行轉換等。2.永遠不要使用動態拼裝sql,可以使用引數化的sql或者直接使用儲存過程進行資料查詢訪問。3.永...