首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清理用户提交的mysql查询

如何清理用户提交的mysql查询
EN

Stack Overflow用户
提问于 2013-05-07 11:27:45
回答 2查看 732关注 0票数 0

我以前从来没有问过问题,因为我总是倾向于在这里或在nixcraft中找到我需要的东西。

我希望对一个仅供我的组织内的技术人员使用的应用程序提供一点指导。他们需要能够查询数据库,但由于信息的敏感性,我们不希望他们能够导出数据转储。我确信还有其他风险需要注意,但我真的不确定这些风险可能是什么。我能想到的唯一清理方法是检查sql语法问题,并防止任何类型的语句产生数据转储。

该脚本将在PHP中编写,没有任何类型的外部库。数据库权限将被限制为SELECT,因此不会有更新、插入、删除等操作。我们将无法利用PDO预准备语句,因为我们的用户将从头到尾输入整个SQL查询。

如果您有任何想法,我们将非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-07 12:48:42

如果你只允许用户在SELECT中输入完整的查询,那就不要这样做,这将是一个安全噩梦。

相反,使用PDO的准备并允许用户进行高级搜索;否则将需要AI级别的杀毒,如果您正在这样做,您就不会问这个问题。

相反,问问你自己,你需要什么样的逻辑来搜索记录。是否需要搜索多个字段?如果您需要连接,您可以在获取记录时隐式地(并且自动地)将表连接在一起。

您还可以在表单中使用LIMIT、分页和各种形式的参数

基本要点是这样的:如果用户可以编写SQL查询,那么您可能只需要让他们登录到您的SQL控制台,而忽略所有清理。当用户编写自己的查询时,清理输入将是相当奇怪的,并可能导致查询甚至不运行。

票数 0
EN

Stack Overflow用户

发布于 2013-05-07 11:53:45

您可以限制查询将用作用户提供的数据的字段,并首先通过mysqli_real_escape_string运行它们。

这假设您只公开了一个表单,其中包含您希望他们搜索的字段,而不是允许他们输入完整查询的内容。

HTH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16410732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档