0
我問這個問題,因爲我還不太清楚,如果過濾器$ _ GET變量足以防止MySQL的注入,所以一開始我有一個過濾功能過濾器url後需要mysqli-> real_escape_string嗎?
function filter_url($url)
{
if (is_array($url))
{
foreach ($url as $key => $value)
{
// recurssion
$url[$key] = filter_url($value);
}
return $url;
}
else
{
// remove everything except for a-ZA-Z0-9_.-&=
$url = preg_replace('/[^a-zA-Z0-9_\.\-&=]/', '', $url);
return $url;
}
}
我有$_GET=filter_url($_GET);
每次我打電話之前
$filter_case =isset($_GET['product_ID'])?"and product_ID={$_GET['product_ID']}":"";
我需要做$mysqli->real_escape_string($_GET['product_ID'])
?如果我仍然要暗示它,什麼樣的SQL注入將超過我的查詢方法?
另外,做$mysqli->real_escape_string($_SESSION['member_ID'])
我認爲是否有人可以操縱他的$_SESSION
變量?
我同意:準備好的語句是針對SQL注入的解決方案,可以在所有情況下工作。 – RandomSeed
現在我看到準備好的聲明有自動轉義,我錯過了,因爲沒有滾動到手冊的末尾。將我的代碼改爲準備好的語句! :) – Anonymous