![](/img/trans.png)
[英]`require ('file.php')` stops my code and display blank page
[英]Avoid other websites query my file.php
我有一個file.php?q = data返回json數據,但我不希望其他網站通過此文件查詢我的數據庫,也不知道該怎么辦。 我只有這個:
if($_SERVER['HTTP_HOST'] != $_SERVER['SERVER_NAME']) exit();
您對如何處理此安全問題有任何想法嗎? 非常感謝你。
因此,您想讓用戶(可能通過您的其他網頁)訪問此文件,但是不希望競爭對手訪問此網頁嗎? 然后,您需要找出導致競爭對手與普通用戶不同的原因。 這個問題沒有確定的防彈解決方案。
您可以通過實施某種身份驗證並計算用戶的請求數來嘗試限制用戶訪問。 但是這些都是半招。
假設是Web訪問者訪問數據,請在訪問任何頁面(或包含file.php鏈接的頁面)時設置一個PHP會話變量。 然后讓file.php檢查該變量的存在。
; o)Cor
嘗試使用$_SERVER
變量的HTTP_REFERER
部分。
您也可以使用一些mod_rewrite規則來防止文件的熱鏈接。 在這里查看教程
如果這確實是您的安全問題,則需要控制訪問。 這可以通過要求身份驗證來訪問所涉及的URL來完成,例如通過使用PHP的HTTP身份驗證 。
為了便於避免,您可以檢查某些瀏覽器發送的HTTP Referer標頭:
$_SERVER['HTTP_REFERER']
文檔 -將用戶代理引至當前頁面的頁面地址(如果有)。 這是由用戶代理設置的。 並非所有的用戶代理都將設置此功能,有些用戶代理提供了將HTTP_REFERER修改為功能的功能。 簡而言之,它不能真正被信任。
相關: 如何保護下載URL被PHP竊取?
HTTP_HOST和SERVER_NAME始終引用您的服務器。 您無法以這種方式檢測到遠程用戶。 HTTP_HOST是用戶在URL中請求的站點名稱。 SERVER_NAME通常是服務器本身的名稱,和/或在Apache中指定為“ ServerName”的任何名稱。
HTTP_HOST和SERVER_NAME通常不同。 服務器本身可能被命名為“ someweirdnumbers.your.hosting.company.com”,而HTTP_HOST將被命名為“ yoursite.com”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.