dongmu5920 2011-10-31 20:52
浏览 12
已采纳

这段代码是否容易受到\ 0 php的影响

I've read about null bytes \0 and read about file_exists not being secure... Can someone tell If this code is safe: Or how do I fix it?

if (file_exists('controllers/' . $controller . '.php'))

This is the _action ("controller") variable, basically this is what $controller is validated with:

$_action = ( (isset($_GET['r']) && ctype_alnum($_GET['r'])) ? $_GET['r'] : $_default );
  • 写回答

2条回答 默认 最新

  • dongyirong3564 2011-10-31 20:58
    关注
    php > $a = "abc\0def";
    php > echo strlen($a);
    7
    

    PHP's is based on libc, but is also a bit smarter than libc and knows how long its strings are, and doesn't suffer from injectable nulls. That being said, not all PHP extensions are the same and some may suffer from the problem, so the answer to your question is... "it depends".

    As for file-exists, it's as safe as you want it to be. if you're using to generate a temporary file, something like:

    $tmp_name = "some random value";
    if (!file_exists($tmp_name)) {
        file_put_contents($tmp_name, "something very critical");
    }
    

    is very unsafe. In the small fraction of a second between the time file_exists returns with a "nope, file doesn't exist", and whenever the file_put_contents starts executing, a malicious user COULD manipulate things so that your output goes somewhere completely different.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。