一個問題一直沒有弄清楚,關於資料處理。
使用者提交資訊--1-入庫--2-前台調出
為了防止xss注入和對html的處理,這個流程是如何操作的?
回複內容:
一個問題一直沒有弄清楚,關於資料處理。
使用者提交資訊--1-入庫--2-前台調出
為了防止xss注入和對html的處理,這個流程是如何操作的?
不知道你說的是 XSS 還是 XSS 與 注入。一般來講注入指的是 SQL 的注入。
你困惑的原因是對 XSS 瞭解不多,簡單點說,我在你的網站上發表內容(比如發表評論),這段內容包含 Javascript 代碼,而貴站沒有對使用者發表的內容進行過濾,這就造成了我之後的人開啟這一頁的時候,會運行我發布的 Javascript 代碼,如果我是個合格的程式員,基本可以利用這段代碼幹任何事情了。比如掛馬,更甚點,如果貴站是個社交網站,我可以事先對轉寄、關注、點贊、分享之類的動作進行抓包,分析 POST 或 GET 格式,然後在 Javascript 中進行相應操作, 例如先關注我,然後分享我的評論給你的好友,你可以看到這是惡性迴圈,是個引爆點,理論上這可以影響到一個社交網站絕大多數使用者。 這是所謂的 XSS。
早年流傳一句話,不要信任任何使用者,話不中聽,但這是極為有道理的,你不知道你的訪客到底是何方神聖,抱有怎樣目的。從他輸入資訊,到他的資訊以任何形式被展示出來(評論、主題帖、站內信,只要涉及他輸入的地方全部都算)這個過程內,你必須得對此內容進行處理,檢驗其中是否含有危險內容,一般都在入庫之前處理,可以連同有可能存在的 SQL 注入一併處理了。至於 SQL 另一個類別,也是使用者輸入(包含$_GET,$_POST了),有可能危害到你資料庫的安全,有經驗的人會猜測你程式裡使用的 SQL 陳述式(比如你的內容地址是http://yourdomain.com/?id=23,顯然你程式中走位就是SELECT id,name FROM xxx WHERE id = 23),他會在網址後面加東西,最簡單的是 or 1 = 1,使你任何語句查詢結果都為真,這要是使用者登入部分,危害太大。詳細的你自己找資料吧。
我見到許多 PHP 項目用的 XSS 過濾是開源庫:http://htmlpurifier.org/
簡單來說,在入庫前要對使用者的輸入進行檢查,通常是防 SQL 注入。然後在頁面顯示資訊時要進行恰當的轉義,這個通常是防 XSS.