簡體   English   中英

阻止上傳php腳本執行

[英]prevent upload php script to be executed

我有一個用戶付費支持的系統,每個用戶都有一個文件夾。 我的網站上有很多(比如200+)子文件夾,每個都需要CSS,圖像,JS等...

我還每周為新用戶注冊時創建文件夾,每個用戶都可以上傳PHP腳本或JS腳本或圖像。 (他們問題的截圖)

我的問題是:在我的/.htacess ,我有一個檢查PHP腳本並重定向到正確頁面的規則,例如site.com/user/page將轉到site.com/user/page.php

我想要做的是防止用戶破壞系統,例如:

site.com/user/upload/test將轉到他的test.php並運行它。

我怎樣才能防止這種攻擊呢?

阻止訪問htaccess中的PHP文件,將此文件放在要阻止文件的文件夾中:

<Files ^(*.php|*.phps)>
    order deny,allow
    deny from all
</Files>

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

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

即使使用mod_rewrite,也會阻止訪問user / upload文件夾中的所有php文件。

但是,如果你想讓.php文件可供下載而不想讓它們執行,你可以在.htaccess上使用它:

<FilesMatch "(.+)$">
    ForceType text/plain
</FilesMatch>

文件夾中的所有文件將以text/plain返回。 您可以在Directory標記中綁定它以從第二個示例獲得類似的拒絕訪問結果。

您還可以選擇要作為text/plain傳遞的文件擴展名:

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

請記住,Apache可能有更多的擴展來處理PHP類型處理程序,它確實有。 這是.htaccess內容,適用於我們的服務器。

<FilesMatch "(?i)\.(php5|php4|php|php3|php2|phtml|pl|py|jsp|asp|htm|shtml|sh|cgi)$">
    ForceType text/plain
</FilesMatch>

它對我們來說很好。

我的問題是:在我的/.htacess中,我有一個檢查PHP腳本並重定向到正確頁面的規則,例如site.com/user/page將轉到site.com/user/page.php

為什么不將用戶頁面創建為site.com/user/page/index.php?

site.com/user/upload/test將轉到他的test.php並運行它

然后你的重寫規則是錯誤的 - 但你沒有告訴我們它是什么。 您處理文件上傳的代碼也是錯誤的 - 它不僅僅是PHP的問題 - 您可以充當各種惡意軟件的騾子站點。

當允許用戶上傳內容時,您永遠不應該以可以由網絡服務器直接尋址的方式存儲它(除非是非常大的特定和VERIFIED文件類型的文件 - 例如視頻)。 所有訪問都應該由控制腳本調解(控制腳本可以為其引導的內容設置mime類型和文件名)。

好吧,我有一個想法,你重定向到test.php,你重定向到一個頁面,將驗證代碼屬於X用戶,如果分配,遵循例程和重定向,如果你不屬於,激發404

對不起,我誤解了這個問題。 我認為防止這些攻擊發生的最佳方法是將文件保存為.php.txt或其他東西,因此它是不可執行的。

但是通過f_open();打印出文件的內容f_open(); file_get_contents();

如果這不是您想要的,您能提供有關您的網站的確切信息嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM