SQL 注入 - 如果第一个查询失败,则强制执行第二个查询
Posted
技术标签:
【中文标题】SQL 注入 - 如果第一个查询失败,则强制执行第二个查询【英文标题】:SQL injection - force execute second query if first one fails 【发布时间】:2020-01-24 10:08:40 【问题描述】:$query = 'SELECT EX1 AS date,rate FROM rates WHERE
PARAM1="' . $param1 . '" and param2="' . $param2 . '" ORDER BY date DESC LIMIT 1';
$param1 易受 SQLI 攻击 - 但有一个问题:
查询失败,因为 rates
不存在 - 是否可以注入另一个查询,例如:
DROP TABLE `users
,查询后——即使第一次执行失败?
【问题讨论】:
这会是现实生活中的场景吗?你会尝试为一个不存在的表执行 SQL 吗? 是的。见:netsparker.com/blog/web-security/sql-injection-cheat-sheet你能给我们更多的信息,你想解决什么问题?使用准备好的语句。 "for ex: DROP TABLE `users , 在查询之后 - 即使第一个执行失败?" 很可能没有... @freeek php mysql 客户端没有支持分号分隔的多条SQL语句..有一个异常->mysqli_multi_query() "$query = 'SELECT EX1 AS date,rate FROM rates WHERE PARAM1="' . $param1 。 '" 和 param2="' 。 $param2 。 '" ORDER BY date DESC LIMIT 1';$param1 易受 SQLI 攻击 - 但有一个问题:查询失败,因为费率不存在 -" ... 要使 SQL 注入工作,您必须有一个有效的工作查询来攻击.. MariaDb SQL Injection的可能重复 【参考方案1】:您应该使用 PDO 或 mysqli 来绑定参数。请查看说明PDO 或 mysqli
【讨论】:
这不是我的问题。以上是关于SQL 注入 - 如果第一个查询失败,则强制执行第二个查询的主要内容,如果未能解决你的问题,请参考以下文章
尝试在短时间内连续第二次运行 SQL 查询时 Java 挂起