2012-04-02 120 views
0

我已使用cURL解決方案來解決XSS,但存在問題。 我proxy.php文件的內容是: -未執行PHP腳本

<?php 
    $url = "http://www.yahoo.com"; 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $file_contents = curl_exec($ch); 
    curl_close($ch); 
    echo $file_contents; 
?> 

而且我這是如何試圖執行PHP腳本

$("#tempButton").click(function(){ 
    $("#pageContent").load('http://localhost:8080/proof/proxy.php',function() { 
     var t = $("#pageContent").html(); 
     alert(t); 
    }); 
}); 

但變量t顯示proxy.php文件的內容,但它是預計將顯示在proxy.php文件中設置的yahoo.com的內容。我在做些愚蠢的事情嗎? #FirstTimePHP

+0

將http:// localhost:8080 /從http:// localhost:8080/proof/proxy.php中刪除,它應該只是'/proof/proxy.php'。此外,檢查螢火蟲和/或鉻檢查器的錯誤細節。 – jpic 2012-04-02 11:01:03

+0

嘗試直接訪問您的頁面(只需瀏覽到proxy.php),或使用Firebug的Net標籤(或任何等效工具)檢查請求的輸出 – TJHeuvel 2012-04-02 11:01:06

+2

您可能沒有在您的Web服務器中註冊PHP。如果是這樣,當從網絡訪問它時,你永遠不應該看到''標籤內的php文件的_content_。 – 2012-04-02 11:01:07

回答

1

由於變量t顯示文件的內容,所以服務器軟件一定不能將它識別爲PHP。

有幾個原因可能會發生。沒有開放標籤將是1,但你當然有這些。

另一個潛在的原因是php並未作爲服務器軟件中的模塊加載。

另一個潛在的原因是服務器不能解析帶有php擴展名的文件(這是可配置的)。

你應該從基礎開始。忽略javascript,而是手動調用url並查看你得到的。有可能你會看到代碼。

如果確實發生這種情況,請確保服務器軟件(通常爲apache)設置爲識別php與php模塊關聯的擴展名。最後確保PHP實際上已正確安裝。

+0

謝謝彼得和Joachimlasksson ..你的答案是有道理的,是有幫助的。其實我的服務器不識別PHP文件,我正在處理它。 – 2012-04-02 11:11:15

1

讓你的proxy.php像這樣。

<?php 
     if(in_array('curl', get_loaded_extensions())) { 
       $url = "http://www.yahoo.com"; 
       $ch = curl_init(); 
       $timeout = 5; 
       curl_setopt ($ch, CURLOPT_URL, $url); 
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
       curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
       $file_contents = curl_exec($ch); 
       curl_close($ch); 
       echo $file_contents; 
       } 
     else { 
     echo 'No cUrl here'; 
     } 
?> 
+1

雖然這是一個很好的做法,但這並不能解決問題。正如問題中所述,php腳本的代碼正在輸出。檢查是否安裝了curl意味着會輸出更多的代碼。 – Peter 2012-04-02 11:30:20

+0

我想我們不能檢查類似is_php_intalled()! – niksmac 2012-04-02 13:24:47