簡體   English   中英

阻止本地PHP / HTML文件預覽在服務器上執行javascript

[英]Prevent local PHP/HTML files preview from executing javascript on server

我有一些 包含javascript調用的 HTML / PHP頁面
這些調用點包含在存儲在遠程服務器上的 (PIWIK)中的JS / PHP方法上。
它們使用http://www.domainname.com/前綴觸發,以指向正確的文件。

我無法修改該庫的源代碼。

當我自己的HTML / PHP頁面在瀏覽器中本地預覽時 ,我的意思是使用ac:\\ xxxx路徑,而不是localhost:// xxxx路徑, 將調用遠程腳本並進行處理

我不希望發生這種情況,僅當從www.domainname.com頁面調用這些腳本時才允許執行這些腳本

你能幫我確保這一點嗎?

可以肯定的是,在瀏覽真實網站時,可以通過一些瀏覽器插件直接繞過動態修改網頁的安全性,但是這樣做有點困難。

我已經在PIWIK問題跟蹤器上打開了一個問題 ,但是我希望盡快從此問題中保護並保護我的網站和相應的統計信息,等待進一步的Piwik更新。


編輯


我要執行的過程是:

  • 有人可以從www.domainname.com以外的任何地方打開頁面
  • >該頁面在遠程服務器上調用JS方法(或者不可以,可以在本地復制),
  • >此腳本在遠程服務器上調用php腳本
  • > PHP腳本說:“嘿,該死的地方叫我,去死吧!”。 或PHP腳本只是不執行。

我嘗試使用.htaccess進行此操作,但是由於任何JS腳本都必須在客戶端上,因此它還會阻止來自www.domainname.com的合法調用。

未經測試,但我認為您可以使用php_sapi_name()PHP_SAPI常量來檢測PHP使用的接口,並據此進行邏輯處理。

不想聽起來很厚臉皮,但是您的情況聽起來很可怕,我建議您搜索一些有關安全性的PHP配置最佳實踐;)

在問題被修改兩次后進行編輯:

現在問題更加清楚了。 但是,如果JavaScript和PHP不在同一服務器上,則您將很難確保這一點。

如果它們不在同一服務器上,則將依賴於可偽造的HTTP標頭(例如RefererOrigin標頭)。

但是PIWIK已經跟蹤了引薦來源(“ Piwik使用第一方cookie來跟蹤某些信息(訪問次數,原始引薦來源和唯一的訪問者ID)”,因此您可以打折無效引薦來源的匹配。

如果這還不夠,那么確保對Web服務的請求來自經過驗證的來源的標准方法是使用標准的跨站點請求偽造防護技術-CSRF“令牌”,有時也稱為“垃圾”或“ nonce”,因為這是分析軟件,如果PIWIK尚未實現此功能(如果其架構可行),我將感到驚訝。 我會問他們。

如今,大多數Web框架都有CSRF令牌生成器和API,您應該可以使用它們,創建自己的API並不難,但是如果您無法修改JS,則在傳遞令牌時會遇到問題。 同樣,PIWIK JS API可能具有用於傳遞會話ID和類似數據的方法。

原始答案

這可以通過內容安全策略來限制可以從中調用腳本的域來實現:

CSP定義了Content-Security-Policy HTTP標頭,該標頭允許您創建可信內容源的白名單,並指示瀏覽器僅執行或呈現這些源中的資源。

因此,您可以將腳本策略設置為self以僅允許執行當前域(文件系統)中的腳本。 不允許任何遠程的。

通常,只有從設置了HTTP標頭的源中才能使用此功能,但是從本地文件系統運行時,這是不可能的。 但是,您可以使用http-equiv <meta>標簽解決此問題

無法通過HTTP頭支持信令的作者可以使用帶有http-equiv="X-Content-Security-Policy"標記來定義其策略。 如果同時存在基於HTTP標頭的策略,則將優先於基於標記的策略。

問題后回答編輯

查看RefererOrigin HTTP標頭。 Referer可用於大多數請求,但是不會從瀏覽器中的HTTPS資源發送Referer ,並且如果用戶安裝了代理或隱私插件,它可能會阻止此標頭。

Origin僅適用於跨域乃至某些瀏覽器具有相同域的XHR請求。

您將能夠檢查這些標頭是否包含您要從中調用腳本的域。 有關如何使用htaccess進行此操作的信息,請參見此處

歸根結底,這並不能保證它的安全,但是用您自己的話來說,這會使實現起來a little bit harder to achieve

暫無
暫無

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

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