PHP 书写<? PHP 问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liangming1
V2EX    PHP

PHP 书写<? PHP 问题

  •  
  •   liangming1 2018-09-07 14:37:28 +08:00 3778 次点击
    这是一个创建于 2590 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近考虑一个问题,就是如果 web 服务被上传 phpwebshell 要怎么办。 有没这种可能,通过修改 php 的解析方法,比如修改 php 文件 <? php 的置顶头为其他,像<? abc。 这样的话就算有恶意 phpwebshell 文件上传也因为系统无法解析它的语法而不能运行。 如果可以行,请问要怎么修改 php ?是否可以需要修改 php 内核?

    16 条回复    2018-09-13 13:39:07 +08:00
    imdong
        1
    imdong  
       2018-09-07 14:52:42 +08:00
    好思路呦,不过人家直接 在 某个 php 文件末尾加一行 $_GET['a']($_POST['b'])怎么办呢?
    嗯,把 php 的文件后缀名也自定义??

    其实还有更简单的办法,能执行代码的目录一律设置不可写入。
    能写入的目录不可执行,直接当做二进制输出。
    fcten
        2
    fcten  
       2018-09-07 14:54:30 +08:00
    可行,但效果非常有限,而且造成不兼容

    https://github.com/php/php-src/blob/master/Zend/zend_language_scanner.l#L1935

    修改后重新编译 PHP
    34C
        3
    34C  
       2018-09-07 15:58:43 +08:00
    存放上传文件的文件夹 不应该有执行脚本的权限,任何文件都不应该被执行
    liangming1
        4
    liangming1  
    OP
       2018-09-07 16:44:16 +08:00
    @imdong
    @fcten
    @34C
    谢谢大佬的不吝解答。
    Heimo
        5
    Heimo  
       2018-09-07 16:48:55 +08:00
    realpg
        6
    realpg  
    PRO
       2018-09-07 17:31:00 +08:00   1
    @liangming1 #4
    php 文件通过版本库联动部署 都是 root 权限 www-data 不可修改
    框架只有 index.php 主入口文件让 php-fpm 执行 不要弄 *.php

    这都 8012 年了…… 以上的规定是我 2011 年时候拟的
    cncqw
        7
    cncqw  
       2018-09-07 19:00:35 +08:00
    @34C

    大佬在 Windows 下怎么设置权限呢
    sampeng
        8
    sampeng  
       2018-09-07 19:16:27 +08:00
    @cncqw windows 就不要跑 php 了。。自己折腾自己
    ysc3839
        9
    ysc3839  
       2018-09-08 00:56:59 +08:00
    @cncqw 右键 属性 安全
    msg7086
        10
    msg7086  
       2018-09-08 01:27:29 +08:00
    @realpg 我们 2008 年的时候就在用类似的规则了,那时候大概 PHP 5.0 的年代。
    一个 PHP 程序最好就是单个入口,引入框架和组件,统一检查用户权限和输入数据,然后程序部分无法被其他账号修改,甚至最好在 wwwroot 以外,然后可上传的目录禁止一切 PHP 解析。

    8012 年了,不应该再用十五年前的习惯来做了。
    realpg
        11
    realpg  
    PRO
       2018-09-08 11:35:49 +08:00
    @msg7086 #10
    我这更绝对一点 只有 index.php 这种框架入口单文件解析
    别说上传目录了
    而且 云服务出来以后 基本也不设上传目录了 上传文件都丢七牛了
    webserver 只有程序 方便基于云服务动态生成新的 vps 直接从版本库拉代码环境自动生成好
    realpg
        12
    realpg  
    PRO
       2018-09-08 11:36:28 +08:00
    @cncqw #7
    windows 也可以设置权限,只是尽量还是别用 windows 跑 PHP
    倒不是 PHP 的问题,PHP 问题不大,权限问题也不大

    MYSQL 问题巨大,各种莫名其妙问题
    Hardrain
        13
    Hardrain  
       2018-09-12 13:21:19 +08:00
    上传目录禁用解析器
    以 Apache+php-fpm 为例,上传目录的.htaccess 加入
    SetHandler !

    其他目录下的.php 还是 chown a-w 吧
    当然如果你用 root 运行了 php-fpm 这是无效的。
    liangming1
        14
    liangming1  
    OP
       2018-09-12 15:56:15 +08:00
    我找到修改的方法了,但是有个问题,修改了源码之后重新编译,会出现一个问题,cp: cannot stat `ext/phar/phar.phar': No such file or directory .
    liangming1
        15
    liangming1  
    OP
       2018-09-13 13:38:31 +08:00
    编译过程之中会生成两个文件,phar.php 和 phar.php ,编译生成的这两个文件是以<?php 开头的,修改了源码的解析头之后,就不能正常读取这两个 php 文件,所以造成 cp: cannot stat `ext/phar/phar.phar': No such file or directory .这个错误,目前我还没有办法解决这个问题。
    liangming1
        16
    liangming1  
    OP
       2018-09-13 13:39:07 +08:00
    编译过程之中会生成两个文件,phar.php 和 phar.phar,编译生成的这两个文件是以<?php 开头的,修改了源码的解析头之后,就不能正常读取这两个 php 文件,所以造成 cp: cannot stat `ext/phar/phar.phar': No such file or directory .这个错误,目前我还没有办法解决这个问题。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2354 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:43 PVG 23:43 LAX 08:43 JFK 11:43
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86