我們的Sitelock網站安全性在我們的網站上找到了一些容易受到攻擊的頁面。 它顯示的說明「注入點:GET;注塑參數:標識;注射型:數字」 我想提到的代碼是Sql注入錯誤
$sa1=DBSelect("select * from tbl where id='".$_REQUEST['sid']."'");
我們如何解決這個問題?任何想法?
我們的Sitelock網站安全性在我們的網站上找到了一些容易受到攻擊的頁面。 它顯示的說明「注入點:GET;注塑參數:標識;注射型:數字」 我想提到的代碼是Sql注入錯誤
$sa1=DBSelect("select * from tbl where id='".$_REQUEST['sid']."'");
我們如何解決這個問題?任何想法?
首先,您不應使用$_REQUEST
,因爲它會讀取$_GET
,$_POST
和$_COOKIE
變量並查找所有這些值。
其次,您不驗證用戶輸入以檢查它是否安全。如果一個ID是一個整數,你至少應該做這樣的事情。
$sid = (int) $_GET['sid'];
$sa1=DBSelect("select * from tbl where id='" . $sid . "'");
這是相當低效和有限的方法。 –
我同意,但我的目標是指出驗證並在查詢數據庫之前確保輸入安全是問題。 – Pankucins
是的,這是*輸入*驗證確實是一個直接導致注射的問題。你必須格式化你的查詢,而不是「驗證輸入」,而且必須比你的代碼更接近查詢執行。 –
請在這裏閱讀http://php.net/manual/en/pdo.prepared-statements.php – elclanrs
在側欄中查看相關問題。 –