簡體   English   中英

阻止直接訪問jquery的發布網址

[英]prevent direct access to jquery post url

我有一個jQuery腳本,該腳本將數據post/get到.php腳本。 但我想防止直接訪問php腳本。 例如,如果用戶查看html源代碼,他們將能夠通過從js文件復制url直接訪問php腳本,而我不希望那樣。 我如何防止用戶這樣做? 我希望用戶通過html UI使用它。 我有谷歌,但沒有找到任何鏈接。 但是,我確實注意到一些受歡迎的網站能夠做到這一點。 我應該怎么做呢?

您似乎在這里尋找一個簡單的重定向。

在您的php文件頂部添加類似的內容。 如果沒有進行適當的張貼,這將阻止訪問該頁面。 當然,您必須更改帖子並重定向到與您的項目更相關的內容。

if (!isset($_POST['data'])) {
    header('Location: your-redirect-location');
}

您也可以基於$ _SERVER ['HTTP_REFERER']變量進行重定向。

編輯:我打算在評論中對此進行解釋,但時間太長。 我應該注意,這是一個簡單的解決方案。 這將使人們避免意外訪問您的腳本。 為您的問題創建100%安全的解決方案確實很困難,而且如果有人真的想訪問它,他們將能夠提供幫助。 如果您在相關腳本中沒有任何安全措施,那就可以了。 否則,您將不得不尋找替代方案。

這是一種解決方案:

<?php
if(isset($_POST["post_var]))
{
//to the code you want to do when the post is made
}
else
{
//do what you want to do when the user views the post page
}
?>

我如何防止用戶這樣做?

您不能-您所能做的就是減輕人們擺弄腳本的風險。 在這方面,確保您擁有正確的HTTP_REFERER和/或POST數據都非常有用:“惡意”用戶需要的不僅僅是將瀏覽器指向URL。

可以在此處使用更多技術:

  • 使用會話變量:您可能不希望未登錄的用戶(如果適用)使用URL。
  • 使用一次性挑戰(令牌):您可以在HTML頁面中放置一個值,並讓JS代碼將此值與POST請求一起發送。 將該值存儲在會話中時將其存儲。 根據會話令牌檢查POSTed令牌,以確保用戶在提交數據之前至少“看到”了HTML頁面-這對於防止重復提交也很有用。

但是,請記住,瀏覽器可以執行的任何操作,人們也可以執行。 所有這些技術都可以阻止好奇者造成傷害,但不能阻止惡意行為。

您所要做的就是確保沒有人能真正傷害到您,就此而言,您的Ajax URL與您網站的其他URL相同:如果可以公開訪問,則必須使用您已經在其他地方使用的任何技術來保護它-會話,用戶權限等。

畢竟,您為什么要關心用戶不使用瀏覽器使用此URL? 您可能想用一個偶然發生的您頁面使用的API調用來考慮它。

您的問題類似於跨站點請求偽造 ,並且具有相同的問題。

為了降低風險,您可以檢查請求方法,檢查引薦來源並檢查來源(如果已設置)。 最好的方法是擁有在服務器上生成的秘密令牌,客戶端在每個請求中都將其返回。 由於您正在與有權訪問您的實時代碼的友好用戶打交道,因此他們可能能夠調試腳本並找到值,但這僅適用於一次會話,這確實是一件麻煩事。

暫無
暫無

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

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