1、SQL注入
SQL 注入是對您網站最大的威脅之一,如果您的資料庫受到別人的SQL 注入的攻擊的話,別人可以轉出你的資料庫,也許還會產生更嚴重的後果。
解決方法:
主流的解決方法有兩種。轉義使用者輸入的資料或使用封裝好的語句。轉義的方法是封裝好一個函數,用來對使用者提交的資料進行過濾,去掉有害的標籤。但是,我不太建議使用這個方法,因為比較容易忘記在每個地方都做此處理。
下面,我來介紹如何使用PDO 執行封裝好的語句( mysqi 也是一樣):
$username = $_GET['username']; $query = $pdo->prepare('SELECT * FROM users WHERE username = :username'); $query->execute(['username' => $username]); $data = $query->fetch();
2、XSS
XSS 又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者在 Web 頁面插入惡意 html 程式碼,當使用者瀏覽該頁之時,嵌入其中 Web 裡面的 html 程式碼會被執行,從而達到惡意攻擊使用者的特殊目的。
解決方法:
堅決不要相信使用者的任何輸入,並過濾掉輸入中的所有特殊字元。這樣就能消滅絕大部分的 XSS 攻擊:
<?php $searchQuery = htmlentities($searchQuery, ENT_QUOTES);
或是你可以使用模板引擎 Twig ,一般的模板引擎都會預設為輸出加上 htmlentities 防範。
3、XSRF/CSRF
CSRF 是跨站請求偽造的縮寫,它是攻擊者透過一些技術手段欺騙用戶去訪問曾經認證過的網站並運行一些操作。
解決方法:
最常用的防禦方法是產生一個CSRF 令牌加密安全字串,一般稱其為Token,並將Token 儲存於Cookie 或Session 中。
每次你在網頁建構表單時,將Token 令牌放在表單中的隱藏字段,表單請求伺服器以後會根據使用者的Cookie 或Session 裡的Token 令牌比對,校驗成功才給予通過。
由於攻擊者無法知道 Token 令牌的內容(每個表單的 Token 令牌都是隨機的),因此無法冒充使用者。
推薦教學:PHP影片教學
#以上是PHP常見安全問題及解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!