阻止上传php脚本执行

apo*_*llo 12 php .htaccess

我有一个用户付费支持的系统,每个用户都有一个文件夹.我的网站上有很多(比如200+)子文件夹,每个都需要CSS,图像,JS等...

我还每周为新用户注册时创建文件夹,每个用户都可以上传PHP脚本或JS脚本或图像.(他们问题的截图)

我的问题是:在我/.htacess,我有一个规则,检查PHP脚本并重定向到正确的页面,例如site.com/user/page将去site.com/user/page.php

我想要做的是防止用户破坏系统,例如:

site.com/user/upload/test将去他的test.php并运行它.

我该如何防止这种攻击?

Gab*_*rtz 20

阻止访问htaccess中的PHP文件,将此文件放在要阻止文件的文件夹中:

<Files ^(*.php|*.phps)>
    order deny,allow
    deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)

或者在root .htaccess文件中,您可以:

<Directory ^user/upload>
    <Files ^(*.php|*.phps)>
        order deny,allow
        deny from all
    </Files>
</Directory>
Run Code Online (Sandbox Code Playgroud)

即使使用mod_rewrite,也会阻止访问user/upload文件夹中的所有php文件.

但是,如果你想让.php文件可供下载而不想让它们执行,你可以在.htaccess上使用它:

<FilesMatch "(.+)$">
    ForceType text/plain
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

文件夹中的所有文件都将返回为text/plain.您可以在Directory标记中绑定它以从第二个示例获得类似的拒绝访问结果.

您还可以选择要传递的文件扩展名text/plain:

<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi.+)$">
    ForceType text/plain
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)


小智 0

好吧,在重定向到 test.php 之前我有一个想法,您重定向到一个页面,该页面将验证代码是否属于 X 用户,如果已分配,则遵循例程并重定向,如果您不属于,则触发 404