我有一個問題,這有點奇怪。我的頁面包含一個html鏈接,刷新頁面並調用一個PHP變量。這個變量將一個日期字符串附加到URL字符串中,該字符串被饋送到MySQL查詢中,該查詢獲取匹配此日期的記錄。我認爲這是造成注射,因爲它有時會從數據庫中刪除用戶!可能從日期字符串注入選擇查詢
我知道在超鏈接中使用'#'可能存在安全問題,但我想知道發生了什麼。這也會對不同的瀏覽器看到不同的效果,看它如何使用JavaScript。被刪除的用戶似乎只發生在某些人的電腦上。
的PHP代碼計算從現在三天一戳,然後把它放到一個SQL格式:
$ts_threeDays = mktime(1,0,0,date('m'), date('d')+3-date('w'), date('y'));
$threeDaysAhead = date('y-m-d', $ts_second_day);
腳本然後偵聽通過在超鏈接通過「天」的URL字符串變量頁:
$date = mysql_real_escape_string($_GET['day']);
的JavaScript和超鏈接是:
<a href='#' onClick="document.location.href='planner.php?day=<?php echo $threeDaysAhead; ?>'"> 3 Days Later</a>
的MySQ L查詢較大,但用戶操作所需的唯一輸入是上述日期字符串。查詢基本上就像這樣(使用另一個select語句訪問用戶表):
SELECT planner.details FROM planner
WHERE planner.date = '$date' AND users.`user_id` = '$id' // Logged in Id superglobal
如果有人可以幫助我,並解釋我的問題,我將非常感激。 非常感謝
你甚至可以指定'$ day'正則表達式相匹配的部分。這種方式如果你有垃圾包含日期(如'2009-09-03'); DROP TABLE學生;'),你把垃圾拿走。 – 2009-09-03 15:19:09
你說得對。正則表達式應該是'^ \ d {4} - \ d {2} - \ d {2} $'^。我的錯 – inakiabt 2009-09-03 17:26:24