可能从日期字符串注入选择查询

2024-02-15

我有一个有点奇怪的问题。我的页面包含一个 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 字符串中的“day”变量:

$date = mysql_real_escape_string($_GET['day']);

JavaScript 和超链接是:

<a href='#' onClick="document.location.href='planner.php?day=<?php echo $threeDaysAhead; ?>'"> 3 Days Later</a>

MySQL 查询更大,但它从用户操作获取的唯一输入是上面的日期字符串。查询基本上如下所示(使用另一个 select 语句访问用户表):

SELECT planner.details FROM planner 
WHERE  planner.date = '$date' AND users.`user_id` = '$id' // Logged in Id superglobal

如果有人可以帮助我并解释我的问题,我将不胜感激。 非常感谢


当你经过时$date通过mysql_real_escape_string,怀疑必须落在其中之一$id,或者我们看不到的东西。

A SELECT语句不会从您的数据库中删除内容。你的 PHP 文件中还有什么负责删除用户,你是否有一些损坏的文件?if/else最终通过一个函数来删除用户的逻辑,而他们确实不应该这样做?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可能从日期字符串注入选择查询 的相关文章

随机推荐