mysql - 我的sql注入(inject)方法

标签 mysql sql linux sql-injection

我不是专家,但我确实有一个网络前端处理订单,其中需要输入数据才能进一步登录。我没有使用该数据库,而是创建了另一个数据库,其中包含一个名为“状态”的额外列。最初,当处理订单时,它们被设置为 0。 cron 作业每 3 分钟运行一次,轮询此数据库以查找状态为 0 的所有用户。运行时,cron 作业将所有当前处理的用户的状态设置为状态 1(因此,如果有任何在脚本运行期间确实获取输入,则将在下次处理,只需 3 分钟)。

将所有新用户的状态设置为 1 后,仅将密码和电子邮件字段转储到文件中,然后通过“LOAD DATA INFILE”加载回用户需要使用客户端登录的真实数据库中。没有网络登录表格。它用于电子邮件,只需使用 IMAP 客户端。但是,我确实使用 cron 的 root 帐户,因为我意识到我需要向用户授予所有特权来转储数据,如果是这样,我不妨先使用 root 更新状态列,然后将新数据转储到文件中,然后将其加载到新数据库中,然后返回并删除状态为 1 的所有用户。这是一个从命令行运行 mysql 的简单 4 行脚本。

这是一个安全的选择,还是我冒着每 3 分钟运行一次 root cron 的风险?我不明白我怎么可能会遇到问题,因为我从不使用 root 来处理网络内容。我使用仅具有 INSERT 权限的单独 mysql 用户在 Web 前端处理新订单。任何意见?我觉得这样我可以避免sql注入(inject),即使我的mysql用户仍然有有限的权限,但总有一些我不知道的东西。

最佳答案

Is this a safe bet or am I risking something

只要是简单的 LOAD DATA INFILE 查询 - 否。然而,

Instead of using that database, I created another one with an extra column called status.

  1. 这样的飞行马戏团完全没有必要。
  2. 无论如何,它并不能保护您免受注入(inject)。

相反,您必须使用 prepared statements适用于您应用程序中的所有查询。

关于mysql - 我的sql注入(inject)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22461481/

相关文章:

mysql - hibernate 、JPA、MySQL : Unable to build EntityManagerFactory

mysql - 在 `select` 的情况下,可以在 `group by` 中使用多个聚合函数吗?

mysql - 如何创建使用 mysql/mssql 中的表数据生成插入语句的 sql 脚本

linux - unix 域套接字的边缘触发 epoll

php - 安全地向 Flash 游戏的获胜者提供唯一的密码?

mysql自连接查询以及映射表

mysql - mysql POINT 坐标的导出/导入问题

sql - 使用游标和变量更新表

c - 为什么调用 lseek 后读取的文件总是返回 0?

c - 如何使用 Alsa 库更改扬声器的音量?