2014-09-04 43 views
0

我一些鏈接我使用像Access只通過jQuery的Ajax和PHP(沒有直接的URL訪問)的文件

的jQuery其中:

$("a.sync").on("click",function(e){ 
    e.preventDefault(); 
    var url = $(this).attr("href"); 
    $.post(url,function(data){ 
    $("#stage").html(data); 
    }); 
}); 

HTML:

<a class="sync" href="__home.php">Link</a> 

此鏈接只是檢測來自另一個頁面的數據,並將其異步放置到#stage。 但使用檢查元素用戶可以看到鏈接__home.php,並可以使用自定義URL直接訪問它。
我不想讓用戶直接訪問那個文件,但只能用Ajax調用...
怎麼辦?

+0

你可以放:'var url =「__home.php」;',但這也可以由檢查員發現......! – loveNoHate 2014-09-04 06:27:04

+0

用您的ajax調用發送一個變量,並檢查您正在檢索的php文件中的變量。 – RST 2014-09-04 06:31:27

回答

-1

試試這個

$("a.sync").click(function(e){ 
    e.preventDefault(); 
    var url = $(this).attr("href"); 
    $("#stage").load(data); 
    return false; 
}); 
+0

這不是什麼即時通訊談論...我想隱藏或拒絕直接訪問URL的訪問 – 2014-09-04 06:29:12

1

你不能完全否定直接訪問(有人能模仿Ajax請求),иге可以變得更加困難。首先,嘗試在__home.php處檢查$ _SERVER ['HTTP_X_REQUESTED_WITH']。其次 - 閱讀關於CSRF令牌

0

這可能證明是非常困難的,因爲您通過AJAX訪問的文件必須是瀏覽該網站的用戶的公開內容 - AJAX調用無論如何都是從客戶端角度觸發的後端

例如,您可以使用某種令牌作爲參數,但問題是令牌必須由正在發送請求的Javascript代碼所知,因此最終由瀏覽該站點的用戶知道也。

閃存可能啓用文件系統文件,但我不熟悉這一點,似乎有點矯枉過正。

相關問題