这种变化可能对安全漏洞产生了更大的影响。 PHP 8之前,字符串将转换为数字,然后使用==比较或任何弱类型转换时的数字。
例如,PHP 8中此代码的结果为TRUE,0,如PHP 8之后为假和1。
var_dump('a'== 0);
开关('a'){
案例0:
回声0;
休息;
默认:
回声1;
休息;
}
我可以有什么安全问题?我已经解除了一个真正的情况,关于代码是这样的:
$ type = $ _request ['type'];
切换($ type){
情况1:
$ sql =“select * from`y_one_one`,其中`类型'= {$ type}”;
休息;
案例2:
$ sql =“select * from`类型_two`,其中`键入= {$ type}”;
休息;
默认:
$ sql =“select * from`y_default`”
休息;
}
打开发件人认为,当它是1和2时,$类型只会输入SQL语句拼接,但它实际上是输入1和1 = 2输入案例1,导致SQL注入漏洞。
PHP 8完全消除了这种漏洞的产生。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。