加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中如何解决Null字符,有什么问题?

发布时间:2023-06-06 13:35:37 所属栏目:PHP教程 来源:
导读:很多朋友都对“PHP中如何处理Null字符,有什么问题?”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧!

由于
很多朋友都对“PHP中如何处理Null字符,有什么问题?”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧!
 
由于 PHP 的文件系统操作是基于 C 语言的函数的,所以它可能会以您意想不到的方式处理 Null 字符。 Null字符在 C 语言中用于标识字符串结束,一个完整的字符串是从其开头到遇见 Null 字符为止。 以下代码演示了类似的攻击:
 
Example #1 会被 Null 字符问题攻击的代码
 
<?php
 
    $file = $_GET['file']; // "../../etc/passwd\0"
 
    if (file_exists('/home/wwwrun/'.$file.'.php')) {
 
        // 文件/home/wwwrun/../../etc/passwd存在的话那么file_exists方法会返回true
 
        include '/home/wwwrun/'.$file.'.php';
 
        // the file /etc/passwd will be included
 
    }
 
?>
 
因此,任何用于操作文件系统的字符串(特别是程序外部输入的字符串)都必须经过适当的检查。以下是上述例子的改进版本:
 
Example #2 验证输入的正确做法
 
<?php
 
    $file = $_GET['file'];
 
    // 对字符串进行白名单检查
 
    switch ($file) {
 
        case 'main':
 
        case 'foo':
 
        case 'bar':
 
            include '/home/wwwrun/include/'.$file.'.php';
 
            break;
 
        default:
 
            include '/home/wwwrun/include/main.php';
 
    }
 
?>
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!