[英]Is it safe using addslashes in php when parameter charset is utf-8?
我读过许多关于addlashes对于SQL注入都不安全的文章,但是它们都使用GBK编码引用相同的示例。 所以我的问题是:当参数charset为utf-8时,使用addslashes()防止在PHP中进行SQL注入是否安全?
实际上,有两个问题合而为一。 因此,最好分别给它们发声。
对于这个问题
如果charset是utf8,使用addslashes()是否安全?
答案是肯定的,这很安全。
如果单独使用一个单独的示例,如果您的字符集为utf8
,则添加斜线可以产生一个安全序列以用于SQL字符串文字。
但是,作为一种保护措施,通常被用来“处理所有输入数据以使其安全”,这被证明是绝对不安全的。 哪个问题
使用addlashes()防止SQL注入是否安全?
使其成为唯一答案:
仅仅因为这种诚实的功能与防止任何注射无关。 从来没有。
您必须了解的主要威胁不是半神秘的GBK漏洞,而是完全由滥用此功能引起的。 因为它并不是要保护您免受注射伤害。 保护的主题比简单的字符串转义要复杂得多。
问题是要记住很多规则 。 还有很多可能的失败点。
出于这些原因,简单的字符串转义不能视为全方位的保护规则。
从这个角度来看,参数化查询虽然不提供100%的保护,但无论如何都可以认为是一种更好的方法,可以消除三种最危险的威胁:
以上我认为这三个理由足以改变您的方法。
此外,正确实现的参数化查询可以使您的代码更加整洁。 给我您的基于addlashes的代码段,我将向您展示如何使其缩短3-5倍且更简洁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.