2013-06-05 39 views
2

我創建了一個網站(純粹的愛好)。我基本上做的是使用jQuery在後臺調用所有ajax。是的,從SQL注入是安全的,所以沒有造成任何損害,但我不希望用戶檢查到firebug/developer工具,並嘗試使用URI並在URL工具欄中手動輸入它並獲取結果。我將如何去防止這種情況發生?PHP - 重定向REQUEST_URI - 正確的方法?

例,用戶輸入的網址框: www.something.com/datapull.php?get=Data &人=肖恩

我有類似:

if(strpos($_SERVER['REQUEST_URI'],'/datapull.php') !== false) { header('Location: /'); } 

但是當我確實,我的網絡陷入了無限循環。我基本上希望網絡在任何時候:www.something.com

我該如何去保持它在沒有用戶手動輸入的地址?

+0

我想你應該用絕對路徑代替相對 – Fabio

+0

小心解釋多一點? – sgkdnay

+0

類似'header('Location:http://www.something.com')' – Fabio

回答

2

要闡述我的意見,你可以試試這個..

在Ajax請求的文件,你可以檢查$_SERVER['HTTP_REFERER']被設置,幷包含自己的域名..

這裏有一個簡單的例子..

的index.php

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Ajax Test</title> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
    </head> 
    <body> 
     <div class="ajax_receiver"> 

     </div> 
     <script> 

      $('.ajax_receiver').load('data.php'); 

     </script> 
    </body> 
</html> 

data.php

<?php 

    print_r($_SERVER); 

如果按原樣運行,您將看到$_SERVER的內容,並應該看到HTTP_REFERER。

現在我們需要做的就是向ajax請求頁面添加一個條件,在這種情況下是data.php,如果沒有設置,或者它不是來自我們域的請求,則退出。

data.php(更新)

<?php 
    if (! isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']) === false) 
    { 
     exit; 
     // or take whatever exit action you want here 
    } 
    print_r($_SERVER); 

希望你可以用它來讓你開始。

+0

完美,正是我所需要的。無法想象我能在何處/如何做到這一點。一旦我成功實現了這個或失敗的LOL,將回到雅...再次感謝! – sgkdnay

+0

沒問題,祝你好運:) – Dale

0

我基本上做的是在後臺使用 jquery調用所有ajax。是的,它從SQL注入是安全的,所以沒有造成傷害

對不起,如果我說它不能幫助防止SQL注入。

不過,我不希望用戶檢查到螢火/開發者工具和 嘗試使用URI和手動輸入的URL工具條中,並得到 結果。

如果Web瀏覽器無法訪問鏈接,那麼您的AJAX也是如此。