簡體   English   中英

jQuery自動完成 - 隱藏php請求頁面內容

[英]jQuery autocomplete - Hide php request page contents

我有一個輸入字段,使用從PHP頁面獲取的文本自動完成。 它運行良好但是如果直接訪問它可以隱藏PHP頁面上的文本嗎? 我意識到它的工作方式就像用戶實際訪問過那個頁面但是有一個技巧可以實現嗎?

不,你不能:正如你所說的那樣,用戶正在請求內容(以及用戶的瀏覽器),因此內容必須是用戶可訪問的,每個“隱形”技術都可以被略顯熟練的用戶輕易擊敗。

我能想到的第一個技巧是使用http標頭。 在為自動完成加載數據的代碼中設置一個自定義數據,您的php頁面會讀取該內容以寫入其內容,否則您不會顯示任何內容。 當用戶嘗試直接訪問該頁面時(將該URL放在瀏覽器上)它沒有顯示任何內容,因為瀏覽器沒有放置您的自定義標頭

$.ajax({
    url: "data.php",
    type: "GET",
    dataType: "html",
    headers: {custom:'showdata'},
    success:function(){}
});

我使用這個技巧讓我的頁面知道要返回什么樣的內容類型,因為有時它應該是json,其他時候它應該是html

顯然它並不完美,但許多用戶不會看到你試圖隱藏的數據

這是一種簡單的方法,可以讓它變得更加隱蔽。 在自動填充數據源頁面上,檢查您選擇的任何名稱的變量。 例如:

if($ _GET ['ninja']!='chop'){return'抱歉,此頁無法直接訪問'; } else {//生成並返回此處的數據}

是的,它可以被擊敗。 但要考慮到“有什么意義?” 您是否存儲關鍵任務數據? 真的不被人看見嗎? 這就是為什么許多小型網站包含可怕的不安全和XSS易受攻擊的代碼,但從未被黑客入侵......對於黑客來說,花時間開發自定義黑客以獲取其中的數據是不值得的。 另一方面,黑客攻擊Windows提供了數百萬(數十億?)的目標來處理各種邪惡的事情。 我當然不是說你的網站並不重要,但似乎不一定需要三重冗余安全性。

這應該工作,將它放在頁面的頂部

  if($_SERVER['HTTP_X_REQUESTED_WITH'] !='XMLHttpRequest'){
     die();
  }

jQuery使用AJAX reqeusts自動發送標頭

暫無
暫無

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

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