首先,我不是試圖破解或做任何非法的事情。以爲我讓你們知道。我有一個客戶想要我在他的系統上做一些修改,當我看着它的時候,我注意到沒有任何東西被逃脫。我不是在開玩笑,沒有任何東西正在逃脫。我向他解釋說,擁有這樣的系統是不安全的。然後他繼續告訴我,他有這樣的系統幾年了,什麼也沒有發生。我需要告訴他他的系統不安全,但我真的不知道要執行SQL注入。以下是一些使用$ _GET的查詢,並且不會轉義。需要幫助與sql注入
SELECT *,DATE_FORMAT(joined,'%M %d, %Y') as \"Joined\" FROM `members` WHERE `name` LIKE '".$ltr."%' ORDER BY points DESC LIMIT $page,50
這裏的另一個問題:
SELECT * FROM groups WHERE id=$thisladder[grid]
,我看到的是「可能」清理$ _GET的唯一事情是這樣的功能:
if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobals, $_SESSION);
}
foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
這有可能是上面的功能可能對變量進行消毒。是的,系統也使用註冊全局變量,這也是不好的。
我也做了一個備份,以防萬一。
你想知道如何防止SQL注入,或向客戶證明它不安全? – skyuzo
哦,不僅他們不逃避任何事情,而且他們明確地*模仿'register_globals'功能,如果它被禁用的話!這是第一個! – rid
我不知道如何證明它。但我知道mysql_real_escape和準備好的語句是要走的路。 – user962449