我读过很多文章,谈到加法对于SQL注入是不安全的,但它们都引用了使用GBK编码的相同示例。因此,我的问题是:当参数charset为utf-8时,使用addslashes()来防止php中的SQL注入安全吗?
发布于 2016-05-11 11:24:39
事实上,其中有两个问题。所以最好把它们分开说。
对于这个问题
如果字符集是utf8,那么使用addslashes()安全吗?
答案是肯定的,它是安全的。
以其本身为例,如果字符集为utf8,则添加斜杠可以生成用于string文字中的安全序列。
然而,作为一项保护措施,其目的是“处理所有输入数据以使其安全”,这是通常使用的措施,但事实证明,这是致命的不安全措施。对于这个问题
使用addslashes()来防止SQL注入安全吗?
这是唯一的答案:
不行!
仅仅因为这个诚实的功能与任何注射的保护无关。从来没有过。
你必须了解的是,主要威胁并不是来自于半神话般的GBK漏洞,而是来自对此函数的滥用。并不是为了保护您不受注射的影响。保护的主题比简单的字符串转义要复杂得多。
问题是存在一个很多规则都要记住。有很多可能失败的地方。
由于这些原因,一个简单的字符串转义不能被看作是一个包罗万象的保护规则.
从这个角度来看,参数化查询虽然没有提供100%的保护,但无论如何都可以被认为是一种更好的方法,消除了三个最危险的威胁:
以上这三个原因,我认为足以改变您的做法。
此外,适当地实现参数化查询会使您的代码更加简洁。给我你的基于加法斜杠的代码片段,我将告诉你如何使它短3-5倍,更干净。
https://stackoverflow.com/questions/37160358
复制相似问题