@
bianhua 不好意思,你不能正确讨论问题,导致你已经被降权了。不是 @
msg7086 我还收不到提示。
@
msg7086 所以这种情况已经排除掉了,要是这种可能性算上去,那任何事件都不可能 100%了。硬件还可以受到辐射导致 1+1 != 2 呢。
至于我做好什么工作,那我的确没有做功课,我全程都是一边看 银河护卫队 一边回答你的。但是到后来,中断的次数已经有点让我不开心了。
我的目的是纠正你对 prepare 错误的理解,然而你对我的一直是人身攻击。我也不好说什么了。
另外可能你的语文理解能力也有点问题。
我一直在说的是
你使用了不能 native prepare 的语句
你使用了不能 native prepare 的语句
你使用了不能 native prepare 的语句
从而导致了
pdo 回退为拼接 sql
pdo 回退为拼接 sql
pdo 回退为拼接 sql
够清楚了吧,我不很不懂为什么讨论一个技术问题,要上升到人身攻击上来。
而且我是很不懂为什么我跟你说 A,你要跟我说 B,我说你 B 说的有问题,你又跟我说 C。这样偷梁换柱完全没意思啊。
整天 judge 别人,噢你很正义,你很邪恶,没有什么意思啊。
我也没看出什么最后一根稻草,你说了半天只能佐证你之前的英语不好啊,理解错了而已。
PS: 这位层主上面的理论还是全部错误的,至少关于 MySQL native prepare 是这样。
Are PDO prepared statements sufficient to prevent SQL injection?
https://stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection/12202218#12202218这个帖子的层主引用的是他在
https://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string/12118602#12118602SQL injection that gets around mysql_real_escape_string()
的回复。
从这里可以看出,这其实是 mysql_real_escape_string 的一个 bug 吧,PDO boom 的原因,是因为他 fallback 到普通的 sql query 模式了。
我也引用一下这位 stackoverflow 答主的回答吧
Wrapping Up
If you:
Use Modern Versions of MySQL (late 5.1, all 5.5, 5.6, etc) AND PDO's DSN charset parameter (in PHP ≥ 5.3.6)
OR
Don't use a vulnerable character set for connection encoding (you only use utf8 / latin1 / ascii / etc)
OR
Enable NO_BACKSLASH_ESCAPES SQL mode
You're 100% safe.
这个 100% safe 是通常意义上的 100%,是可知论中的 100%。
至此,我再参与与 @
bianhua 的任何讨论,被人身攻击我已经很不开心了,我也不能保证再继续讨论,自己是否能理性分析问题,不跑题了。
当然如果我有错误,或者各位有任何问题都可以 @我。