有什么方法可以阻止用户在我的数据库上执行UNION操作?
答案 0 :(得分:5)
您可以在运行之前为查询构建EXPLAIN
,如果在UNION
中提及select_type
,则拒绝查询。
这不允许您运行任何DML
个查询,因为EXPLAIN
对它们不起作用。
并不是说我知道为什么你需要在地球上做到这一点。
答案 1 :(得分:3)
不是我推荐这个,而是......
if (stripos($_POST['query'],'union') !== false) die("No dice, bro.")
这显然会产生不必要的副作用,即不允许用户在任何数据库字段中输入单词“union”而不做像concat('un','ion')
那样愚蠢的事情。
答案 2 :(得分:0)
我基本上会支持reggie。另外,您只能扫描UNION一词的输入字符串。请注意,这无论如何都存在安全风险。