【发布时间】:2017-01-01 23:50:59
【问题描述】:
我不了解 SQL 注入及其工作原理。当您有用户输入信息并且您从数据库中选择输入信息与数据库中的信息匹配的数据时,我第一次开始阅读它。例如:
SELECT email FROM users WHERE username=?
现在,我了解到您设置了一个参数并且我能够成功地做到这一点,但是,我不明白是否可以从“SELECT email”部分注入 SQL,想象电子邮件是一个字符串能破坏数据库,不应该也是个问题吗?如果是这样,是否有解决办法?
我希望我能得到很好的解释,我的英语不是最好的,但如果您有问题,我可以回答您的问题。另外,我确实尝试过搜索此内容,但不太确定如何将其表达出来,因此未能找到与此类似的问题。
【问题讨论】:
-
“我不明白是否可以从“SELECT email”部分注入 SQL” - 不,除非有
WHERE子句(或任何其他子句类型)使用未准备好的用户交互输入。 -
理想情况下,整个 select 语句应该被参数化,所以这不应该发生。
-
“想象电子邮件是一个可以破坏数据库的字符串” - 你需要用一个例子来编辑你的问题。现在,
email是“您”选择的列,而不是用户/输入选择的列。如果您完成了SELECT $email并使用 GET/POST 数组定义它并且没有转义它(注意:您不能绑定表/列)但您可以在之前使用real_escape_string()转义它或使用安全列表,只是不是有准备好的声明;那么是的,如果你不这样做,那可能(可能)会打击你。我会说我回答了这个问题;恕我直言。
标签: php mysql sql-injection