PHP常見安全問題及解決方法

2020-07-16 10:06:07

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常見安全問題及解決方法的詳細內容,更多請關注TW511.COM其它相關文章!