xss攻擊是web攻擊中非常常見的一種攻擊手段。如果你還沒有聽說過xss攻擊,可以先了解xss的相關知識和原理,例如:
防範xss攻擊的方式也十分簡單:轉義!
但是轉義的時機?是在持久化之前轉義呢,還是讀資料之後escape呢?
我開始想也沒想就選擇了第一種方式,因為這種方法看上去一勞永逸,但是我現在越來越傾向於第二種方式。
實際上選擇第一種還是第二種需要根據你的實際情況來定。我們知道xss攻擊是一種web攻擊手段,它的執行環境是在使用者的瀏覽器中,也就是說使用者的執行環境是不可控的。那麼在持久化之前進行轉義看上去似乎不錯,因為我們可以利用filter或者interceptor攔截所有的寫入請求,統一進行轉義。這樣一來,我們的業務邏輯就完全不需要care轉義的問題了,因為我們取到的資料已經都是轉義的過的了。
最後,我總結一下這兩種方式的優缺點:
轉義方式 優點 缺點 入庫前轉義 一勞永逸 需要針對多端進行不同的輸出,靈活性不足,無法應對後期資料格式的變化
讀取前轉義 簡單,靈活,能應對各種資料格式的場景 需要對每個輸出資料轉義,人工處理容易遺漏
本人推薦第二種方式來防範xss攻擊。雖然需要對每個輸出資料都進行轉義,但是如果你使用帶自動轉義的模版或者框架來處理的話,那麼就可以極大的提高效率,又可以規避安全的問題。最後還是要提醒大家,安全無小事,即使你覺得沒有人會攻擊的系統,還是要規避這些風險,安全是系統的基石。
php防範XSS攻擊
跨站指令碼攻擊 cross site scripting 攻擊者往web頁面裡插入惡意script 當使用者瀏覽該頁之時,嵌入其中web裡面的script 會被執行,從而達到惡意攻擊使用者的目的。模擬過程 新增功能中,請求引數值包含script標籤js 新增成功之後,資料表中 訪問新增的這條資料,j...
php對xss攻擊的防範
xss cross site script 跨指令碼攻擊 xss攻擊本質 通過標籤 一對尖括號 來達到攻擊的目的,所以我們只需要將尖括號 進行 轉義,這就是php中提到的實體轉義。htmlspecialchars函式和htmlentites函式 所有表單輸入的地方,都需要實體轉義,以下為轉義函式 f...
ThinkPHP防範XSS跨站攻擊
有人在烏雲向我提交了thinkphp xss攻擊的bug,抽時間看了一下。原理是通過url傳入script標籤,thinkphp異常錯誤 頁面直接輸出了script。原理 其中m的值是乙個不存在的module,同時是乙個完全的script,在異常錯誤頁面中被執行實現xss跨站攻擊。防範方法 找到異常...