2013-10-03 40 views
1

是否有可能通過從另一主機發送PHP變量來攻擊網站?例如:通過從另一主機發送PHP變量進行黑客攻擊

我有一個文件secure_content.php:

<?php 
    if($fgmembersite->Login()) //placed at the top to avoid the warning: headers already sent 
    { 
    $login = TRUE; 
    } 
    //intentionally removed {else $login === FALSE} 

    // echo some contents 

    if ($login === TRUE) 
    { 
    //echo secure data 
    } 

    else 
    { 
    echo "You are not authorised to view this content"; 
    } 
?> 

而且攻擊者有一個名爲在他的網絡服務器上:hack.php

<?php 
$login = TRUE; 
require_once "http://mywebsite.com/secure_content.php"; 
?> 
  1. 是否有可能黑客查看安全內容?
  2. 如何避免使用include/require從其他web服務器處理我們的腳本?
+0

不!除非你使用'eval'函數! – undone

+3

不應該是'$ login = TRUE;'而不是'$ login === TRUE;'? –

+0

@MatteoTassinari你是對的。 – SCC

回答

4

不,不能從其他網絡服務器處理腳本。 您的服務器不會將整個PHP源代碼提供給遠程服務器,相反它會給輸出運行腳本的輸出。 這裏不用擔心。

您無法避免使用其他網絡服務器中的include處理您的腳本,因爲這是不可能的。所以沒有什麼可以阻止的。

+0

什麼是刪除服務器? – SCC

+0

這是一個錯字,意思是「偏遠」。 – Denis

+0

我的第二個問題呢? – SCC

2

正如丹尼斯所說,雖然我想從個人經驗管理網站添加一些有趣的提示。

人們經常在編輯文件時將其php腳本重命名爲secure_content.php.back之類的東西 - 害怕它。然後,攻擊者可以下載您的PHP腳本訪問(secure_content.php.back)。擁有源代碼不足以劫持變量,但已經是一個漏洞。它會得到放大,如果您secure_content.php.back有一個像$database_password

還有些配置變量,如果你是從你的Web服務器,Apache的(或其他)卸載PHP將成爲您的secure_content.php爲文本文件 - 也風險。只需記住,當你要修補你的PHP引擎。

+1

防止第一種情況 - 在.htaccess中添加以下行:AddType application/x-httpd-php .back – SCC

1

不可以。您的服務器將運行該腳本,然後將結果發送到惡意服務器。

如果您使用的是register_globals,則舊版本的PHP中可能會出現類似的情況。這將允許有人撥打http://mywebsite.com/secure_content.php?login=true

這會在腳本開始時將$login設置爲true。謝天謝地,register_globals現在默認關閉,在5.3中不推薦使用,並在5.4中刪除。請參閱here

+0

我的第二個問題呢? – SCC

+0

如果您的服務器設置正確,則.php文件將始終在您的服務器上進行處理。請求您的頁面和Web瀏覽器的另一臺服務器之間沒有區別。就目前來看,其他服務器無法處理您的PHP。 – Jim