前端打算用 ajax 來擷取資料,可是怕辛辛苦苦輸入的資料,被別人通過分析 ajax 返回的資料直接移花接木盜走。
是通過驗證的防止防止這種行為的發生嗎?可是目前網站是不需要註冊即可使用,所以應該如何防止?
謝謝。
大概就是:
前端 -> 通過 ajax 擷取資料 -> 後台 -> 返回資料
如何防止別人偽造 ajax 擷取資料
回複內容:
前端打算用 ajax 來擷取資料,可是怕辛辛苦苦輸入的資料,被別人通過分析 ajax 返回的資料直接移花接木盜走。
是通過驗證的防止防止這種行為的發生嗎?可是目前網站是不需要註冊即可使用,所以應該如何防止?
謝謝。
大概就是:
前端 -> 通過 ajax 擷取資料 -> 後台 -> 返回資料
如何防止別人偽造 ajax 擷取資料
這麼說吧,你的目的就是提供給某些人一些資料,那麼不讓這些人抓你的資料就違反你最初的目的
這就像 我給你十塊錢,我又不想讓你拿這十塊錢
我之前也是在這上面糾結過,採取種種措施,最後達到的效果不過是增大抓取的難度而已
這就和用戶端加密一樣,無論你怎麼加密混淆,前提都是建立在一個可信任的通道上的,當通道不可信時,啥都沒用
你網站不需要登入,那就預設了所有內容是免費提供給所有人的,直接瀏覽資料和調用 API 擷取資料有區別麼?
就算不提供 Ajax , 從網頁上直接爬走是一樣的啊,騷年.
“目前網站是不需要註冊即可使用,所以應該如何防止”。
“別人偽造ajax擷取資料”
首先你得知道如何區分 所謂的“別人”。但看問題裡並沒有說明。
看樓主的需求,應該是一種內容型的網站,需求應該就是怕別人剽竊自己的內容。
做任何事情都有成本,一個安全原則是提高對方的作案成本,付出的比得到的多很多,以達到讓對方放棄作案的目的。
有個比較常見的方法是,將你們的內容(資料)在後端產生帶浮水印的圖片,ajax載入。至少別人不能直接用。
如果不進行身份驗證,怎樣防範都是徒勞的。因爲想要阻止「別人」,首先得識別「別人」。
身份驗證可以不是顯式的登錄,而是 Google 式的追蹤。要做到即便換瀏覽器換 IP 清空瀏覽器緩存、cookies 照樣能識別同一用戶。
能做到這些,再限制調用數據的頻率,對可疑者強制輸入驗證碼,基本就是 Twitter、Google 這些大公司的水準了。
樓主所說的這個資料終究要在某些合法頁面被顯示的,所以用什麼方法也不能避免被盜用。只是盜用的成本問題
我想沒有好辦法。如果想拿到,是肯定能拿到的。
1、最上層顯示頁面的時候後端輸出一個唯一的簽名;
2、Ajax 從前端發起請求到後端擷取資料時需傳遞效驗參數,後端再效驗簽名
不知道這個思路能否滿足你的需求(不過這個思路的簽名依舊可以被獲得)
簡單的話可以在每個ajax請求裡加個sessionID。後端根據 sessionID 判斷是否返回資料。但是沒有辦法完全避免爬蟲來抓資料。
oauth2
每次發起ajax請求的時候驗證一個token (加密串)即可
伺服器判斷referer, 如果referer的網域名稱是自己的網域名稱, 就返回, 不然就不返回。
Access-Control-Allow-Origin這個header就夠了
網頁是公開的,資料就是公開的,任何驗證都是徒勞,都是可以被 robot 模仿的。
可能唯一有點作用的,就是對資料進行處理,比如小說網站就不傳文字,
而是傳由文字產生的圖片,這是一個可以參考的例子。
伺服器產生一個token(比如 md5(key+ip+date),這個規則只有管理員知道)與html一起下發給使用者,然後由使用者瀏覽器發起ajax請求,同時附加之前伺服器產生的token,伺服器判斷來源網站網域名稱+token正確後給使用者發回資料。
之前為了防止投票作弊器,想到了這個辦法。
一句話,只要是能看到的,就是可以拿到的,所以不用糾結了
這是可以徹底解決的,給大家一個思路,就是把檔案放在瀏覽者的內存,至於瀏覽器緩存方面,可以利用overwrite緩存。讓盜竊者得到一個無用的檔案,您還可以在檔案內指出他由哪個IP取得這個檔案,嚇唬他們一下,讓他們以後對偷竊沒信心。我以前在香港寫了很多程式,時而會被人偷了,所以研究了這個方法,希望大家不要把辛苦工作得來的成果讓小人們奪去。
我看到有個叫做_影xx_的,在這裡罵人,佩服喔,他媽媽的辛辛苦苦湊大他,卻連幾行字都理解不到,大家說他懂幹啥呢?
什麼許可權呀,許可證呀,給訪問者種種難度只是排斥而已,做了前端就是想讓所有人看,像_影xx_這種無能之輩都能看。這樣才有趣,大家說對不對?
後端誰都不能看,這是對智慧財產權的保護。調用的src可以臨時產生,也可以產生多次,也可以臨時移除,緩衝由我來控制,明白嗎?在不明白就發郵件給我,我私下詳細告訴你。