2013-06-03 77 views
0

我們的Sitelock網站安全性在我們的網站上找到了一些容易受到攻擊的頁面。 它顯示的說明「注入點:GET;注塑參數:標識;注射型:數字」 我想提到的代碼是Sql注入錯誤

$sa1=DBSelect("select * from tbl where id='".$_REQUEST['sid']."'"); 

我們如何解決這個問題?任何想法?

+3

請在這裏閱讀http://php.net/manual/en/pdo.prepared-statements.php – elclanrs

+2

在側欄中查看相關問題。 –

回答

0

首先,您不應使用$_REQUEST,因爲它會讀取$_GET,$_POST$_COOKIE變量並查找所有這些值。

其次,您不驗證用戶輸入以檢查它是否安全。如果一個ID是一個整數,你至少應該做這樣的事情。

$sid = (int) $_GET['sid']; 
$sa1=DBSelect("select * from tbl where id='" . $sid . "'"); 
+0

這是相當低效和有限的方法。 –

+0

我同意,但我的目標是指出驗證並在查詢數據庫之前確保輸入安全是問題。 – Pankucins

+0

是的,這是*輸入*驗證確實是一個直接導致注射的問題。你必須格式化你的查詢,而不是「驗證輸入」,而且必須比你的代碼更接近查詢執行。 –