Web 開發中,用戶在表單中輸入的字元都應該經過哪些處理?
12-30
PHP中,我知道有 htmlspecialchars(),處理&<&>等字元的;還有nl2br(),把/r/n轉換成&
。還有其它的嗎?空格如何處理?比如段前縮進,提交到資料庫再在前台顯示的話就沒有了。
我認為應該有這麼兩個層次:
1. 滿足業務需求的驗證業務是多種多樣的,所以字元串具體需要滿足那些需求,這得根據實際業務來處理,例如要求用戶提供郵箱地址,那麼字元串就必須滿足電子郵件地址的格式。2. 滿足安全規範的驗證
客戶提交到伺服器端的信息可能包含惡意代碼,例如SQL Injection攻擊代碼,Cross-Site Scripting攻擊代碼等等。我們得根據不同的安全風險對輸入信息進行相應的驗證和處理。例如針對SQL Injection的防護,我們得過濾掉一些特殊字元,如:
『(單引號);(分號)
/* (注釋符號)等等(針對SQL Injection的防護絕不僅僅是過濾掉幾個特殊字元就完事兒了,比較完備的防護請參考這裡 https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet)再例如針對Cross-Site Scripting的防護,比較推薦的辦法是在「用戶提交的信息會被顯示出來的頁面」進行「輸出編碼」。說起來可能比較費勁,詳細防護信息請看這裡 https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
Web安全越來越受到重視,這是個好兆頭。如果你有興趣,推薦可以到這裡看看常見的Web安全威脅。 https://www.owasp.org/index.php/Top_10_2010-Main如果是輸出到網頁內容,要經過&<&>等特殊字元串替換,比如php裡面用htmlspecialchars。另外注意是否影響美觀,比如輸出一些特殊的字元。
如果要存到資料庫,則注意轉義下back-slash ()
長度檢查。&
推薦閱讀:
※科班計算機it從業者,都學些什麼?
※github上有哪些值得學習的優秀的php開源項目?
※如何用php 編寫網路爬蟲?
※有什麼是 Python 可以做,但是 PHP 不可以做的?
※PHP socket通信問題, 如何按照自定義的協議進行通信?