現在像jQuery這樣的JavaScript庫比以往更受歡迎,.js文件開始包含越來越多的網站邏輯。如何以及從何處獲取數據/信息,處理信息的方式等等。這不一定是壞事,但我想知道延長這可能是一個安全問題。包含網站邏輯的安全和JavaScript文件
當然,數據的真正處理仍然發生在使用PHP或其他語言的後端,並且確保在這一點上沒有不必要的事情發生是關鍵。但僅僅通過查看站點的.js(很大程度上依賴於jQuery),它會告訴一個人或許比開發人員想的還要多。特別是因爲現在的每個瀏覽器都帶有相當豐富的Web開發環境或附加組件。即使是新手操縱DOM也不是什麼大事。一旦你弄清楚了代碼的存在,以及你如何通過編輯DOM來影響它,這個'有趣'就開始了。
所以我的主要問題是:
我不希望每個人都能夠看一個.js文件,看看到底(或者說:對於很大一部分)怎麼我的網站,網頁應用程序或CMS的作品 - 有什麼,它有什麼作用,它是如何做的等等。
我很擔心通過'揭幕'這個信息,比我更聰明的人想出了一個辦法操縱DOM以影響他們現在知道該站點使用的JavaScript函數,可能會繞過我實現的後端檢查(因此錯誤地認爲它們足夠好)。
我已經爲不同的.js文件使用了不同的部分。一個Web應用程序。但總有一些東西必須在全球範圍內提供,有時候這些東西比我想公開的要多。而且因爲它都是「在那裏」,所以誰說他們無法找到其他文件。
我有時會看到一個沒有換行符和JavaScript的巨大查詢。就像緊湊的jQuery文件一樣。我確定有一些應用程序或技巧可以將常規的.js文件轉換爲一個長字符串。但是,如果它能做到這一點,是不是很容易把它變回更易讀的東西(除了節省空間之外,使它變得毫無意義)?
最後我在想是否有可能檢測到.js文件的請求是否來自網站本身(通過將腳本包含在HTML中)而不是直接下載。也許通過使用例如阻塞後者Apache的ModRewrite,可以在HTML中使用.js文件,但是當有人試圖訪問它時,它會被阻止。
您對此有何看法?我反應過度了嗎?我應該儘可能多地分割我的JS,還是花更多時間三重檢查(後端)腳本幷包括更多檢查以防止造成傷害 - 這樣做?或者是否有一些最佳做法來限制JavaScript及其包含的所有信息的曝光度?
@邁克爾·布魯克斯這些都應該在服務器端解決。用戶輸入不應在客戶端進行消毒,因爲它不受信任。 – ceejayoz 2010-02-18 23:06:24
夥計,採取Xanax。 – ceejayoz 2010-02-18 23:13:23
有些情況下,當用戶數據未命中服務器時需要客戶端驗證。例如,用戶通過clickTAG = javascript向敏感域上託管的易受攻擊的swf發送鏈接,以便在敏感域上竊取受害者的Cookie。這裏開發人員只能在以http(s)開頭的輸入上調用getURL。基於DOM的XSS是另一種情況,其中userinput用於說明設置innerHTML,而沒有任何客戶端清理。請注意,服務器使用的數據必須經過驗證服務器端,我們不應該依賴任何客戶端驗證。 – mar 2010-02-18 23:51:50