我不是专家,但我确实有一个网络前端处理订单,需要输入数据才能进一步登录。我创建了另一个名为status的额外列,而不是使用该数据库。最初处理订单时,它们被设置为0.对于状态为0的所有用户,cron作业每隔3分钟运行一次轮询此数据库。运行时,cron将所有当前处理的用户的状态设置为状态1(如果有的话任何在脚本运行期间获得输入的内容,下次将只处理3分钟。
将所有新用户的状态设置为1后,只需将密码和电子邮件字段转储到文件中,然后通过" LOAD DATA INFILE"返回用户需要使用其客户端登录的真实数据库。表格中没有网络登录。它仅用于电子邮件,只使用IMAP客户端。但是,我确实使用root帐户作为cron,因为我意识到我需要将所有权限授予用户以转储数据,如果是这样的话,我不妨只使用root来更新状态列,然后将新数据转储到一个文件,然后将其加载到新的数据库中,然后返回并删除状态为1的所有用户。这是一个从命令行运行mysql的简单4行脚本。
这是一个安全的赌注还是我冒着每3分钟运行根cron的风险?我不知道我怎么可能遇到问题,因为我从来没有使用root来处理网络内容。我使用一个单独的mysql用户,只有用于Web前端的INSERT priv来处理新订单。任何意见?我觉得这样我可以避免sql注入,即使我的mysql用户仍然有限的权限,总是可能有一些我不知道的东西。
答案 0 :(得分:2)
这是一个安全的赌注还是我冒险的事情
只要简单的LOAD DATA INFILE查询 - 没有。然而,
我创建了另一个名为status的额外列,而不是使用该数据库。
相反,您必须对应用程序中的所有查询使用prepared statements。