string()可以很好地防御SQL注入?

这个问题在这里已经有了答案:

  • 我可以通过用单引号转义单引号和周围的用户输入来防止SQL注入吗? 18个答案
  • 我如何防止PHP中的SQL注入? 28个答案
  • SQL注入绕过mysql_real_escape_string()4个答案

  • 没有

    is_string()不会防止SQL注入,无论如何,数字有效负载不会导致任何表损坏或不必要的访问,并且字符串清理不能防止所有SQL注入。

    我应该给你一些关于为什么准备好的声明是惊人的,但是你自己指出问题的关键是指出消毒中的缺陷

    为什么你应该使用就卫生处理准备好的声明

  • 在某些情况下,您需要在数据库中使用未经过处理的数据,例如特殊格式的文本(如LaTeX,XML或JSON),您需要对数据进行清理,这不是100%的准确性保证(例如,XML文件包括诸如"将被更改为”的HTML实体,改变数据)
  • 准备好的语句可以重新绑定并在几行内执行
  • 从理论上讲,如果您有类似下面的查询,那么消毒不会为您节省(从这里借用)

    $ iId = mysql_real_escape_string(“1 OR 1 = 1”);
    $ sSql =“SELECT * FROM table WHERE id = $ iId”;


  • NO:PHP错觉#1:Mysql(i)_real_escape_string防止SQL注入

    这个过滤器将阻止任何恶意用户输入,如哈哈',注''

    你的想法不过是一种保护。 用户输入中没有任何“恶意”,例如haha',inj'',真正恶意的输入都不会包含任何这些字符。

    也就是说,任何用户输入都是一个字符串,所以你会创建一个臭名昭着的魔术引号功能的嘲弄,很多被鄙视和长期从语言中删除。

    去准备好的陈述。

    链接地址: http://www.djcxy.com/p/93455.html

    上一篇: string() a good defense against SQL Injection?

    下一篇: Is there any way to SQL inject in my code?