2017-04-17 99 views
6

我在almaconnect.com上,在主頁上有一個文本框,當您鍵入(通過發出ajax調用來加載內容)時,它會自動建議大學的一些結果。我沒有犯同樣的Ajax調用,但請求的捲曲請求,導致對終端如何保護ajax內容

curl 'https://www.almaconnect.com/suggestions/portaled_institute?q=am' -H 'Host: www.almaconnect.com' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate, br' -H 'X-Requested-With: XMLHttpRequest' -H 'Referer: https://www.almaconnect.com/' -H 'Cookie: Almaconnect=; _ga=GA1.2.315358219.1489989532; __utma=117457241.315358219.1489989532.1490871434.1492414070.3; __utmz=117457241.1490871434.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); _gat=1; __utmb=117457241.1.10.1492414070; __utmc=117457241; __utmt=1' 

一些加密線正是我想要相同的功能,我的網站,這樣,如果任何用戶嘗試獲取我的網站數據,他不會能夠。

回答

9

無論二進制數據,你在終端看到當你捲曲通話未加密的內容。它只是壓縮的內容。您可以通過運行

curl $params > output 

驗證它可以檢查該文件通過運行

file output 

匹配任何已知的文件格式,你會看到結果類似於

output: gzip compressed data, from Unix 

東西運行gzip -d -c output將解壓並將純文本內容打印到終端屏幕。

原因

之所以出現這種情況是因爲,你有捲曲的呼叫發送accept-encoding頭。與瀏覽器不同,curl不會自動解壓縮結果。這就是造成這種混亂的原因。

-H 'Accept-Encoding: gzip, deflate, br' 

刪除來自卷邊調用這個特殊的標頭將讓你直接在未壓縮的明文格式的響應。你可以嘗試下面的命令。

curl 'https://www.almaconnect.com/suggestions/portaled_institute?q=am' -H 'Host: www.almaconnect.com' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Accept-Language: en-US,en;q=0.5' -H 'X-Requested-With: XMLHttpRequest' -H 'Referer: https://www.almaconnect.com/' -H 'Cookie: Almaconnect=; _ga=GA1.2.315358219.1489989532; __utma=117457241.315358219.1489989532.1490871434.1492414070.3; __utmz=117457241.1490871434.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); _gat=1; __utmb=117457241.1.10.1492414070; __utmc=117457241; __utmt=1' 

摘要

almaconnect.com並沒有真正採取任何額外的步驟來混淆他們的AJAX響應。這樣做通常是一個糟糕的主意。無論您採用什麼方法來混淆您的回覆(例如使用HTTP Referrer字段),人們總是會想出反擊措施來打敗他們。

這簡直是不值得投入精力和時間來拿出一個機制,這將最終被確定攻擊者被打破的時間。

+0

謝謝@gtux,「接受編碼」在這裏讓我感到困惑,奇妙地解釋道。 –

0

服務器正在返回一個加密的響應,在客戶端使用javascript解密接收到的響應後。您可以通過以某種加密方式發送您的服務器響應,然後在客戶端解密來做同樣的事情。同樣的例子可以是加密js。 看一看:Encrypt with PHP, Decrypt with Javascript (cryptojs)

+0

但他們正在做的事情不同的原因。 –

0

也許他們正在檢查ajax請求的HTTP_REFERER值。如果HTTP_REFERER不是網站,那麼它可以返回一個加密的響應。

也可以使用基於時間的令牌來保護ajax調用。例如,當請求網頁時,可以在服務器上生成隨機字符串並將其存儲在數據庫中。這個字符串被髮送到客戶端,它在ajax請求中使用它。然後服務器可以檢查令牌是否已過期。此方法允許ajax調用在一段時間內有效。

+0

我在我的捲曲請求中設置Referer,所以不能成爲案例。 –

1

這是不可能的。

answer from gtux很好地解釋了您看到壓縮內容的二進制字符而不是加密內容的原因。

注意,這很簡單版本的作品:

curl 'https://www.almaconnect.com/suggestions/portaled_institute?q=am' 

答案from gaganshera可以告訴你一個方法來混淆的內容,但是,這並不意味着要真正保護內容,只是爲了讓人們有點困難看到它,因爲解密代碼是在公共頁面。

您的網站可以通過安全(登錄+設置cookie)保護或公開。如果被保護,安全代碼會檢查cookie標頭。如果公開,只有混淆內容的方法,而不是保護內容。如果您在Firebug響應看到未加密

https://stackoverflow.com/a/14570971/1536382

https://www.quora.com/How-can-we-hide-JSON-data-from-tools-like-Chrome-development-tools-and-Firebug-etc-as-a-security-beyond-https