这足以清理用户提供的SQL查询吗?

时间:2012-01-06 23:25:19

标签: sql

我想允许SELECT查询到我的数据库,但不想允许更新(或丢弃!)。

是否足以确保查询以SELECT开头并且不包含分号?

我正在使用jdbc执行查询,目前针对MySQL,但希望不要将其限制为。

编辑: 我很欣赏使用无法更新但又想知道是否有必要的用户的谨慎态度,而不仅仅是迷信。

2 个答案:

答案 0 :(得分:3)

更好的方法是创建一个新帐户并允许帐户使用某些命令。

答案 1 :(得分:1)

您不得执行用户提交的代码。允许用户提交代码是打开拒绝服务攻击的好方法,至少是这样。例如,攻击者可以轻松提交带有巨大笛卡尔积的查询,以保证您的服务器停机。

您可以安全地允许用户指定,但不能指定代码。然后使用带参数的预准备语句将它们输入的值组合到SQL查询中。

允许用户提交SQL查询与shellexec($_GET["cmd"]);

一样危险