我有一个问题,这有点奇怪。我的页面包含一个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