让我们采取以下易受攻击的查询($ id未被转义):
SELECT * FROM table WHERE id = $id
在MySQL 5.x中是否可以通过 UPDATE 语句修改某些数据,该语句在内部被黑客入侵的SELECT语句中出现?
我想到了使用benchmark()函数的东西:
SELECT * FROM table WHERE id = id OR benchmark(1, (UPDATE ...))
但它似乎不起作用:
错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'UPDATE ...
附近使用正确的语法
没有使用存储过程的其他任何可能性?
编辑:当然也不使用多个查询
答案 0 :(得分:4)
取决于驱动程序,这可能会通过:
SELECT * FROM table WHERE id = id; UPDATE table ...
答案 1 :(得分:1)