2011-06-15 97 views
2

我寫過一個網絡應用程序,它使用側面的廣告橫幅來支持免費帳戶。問題是,由於廣告被加載到自己的<div>中,所以在任何現代瀏覽器中進入開發人員/調試控制檯都相對容易,並且可以使用CSS覆蓋刪除div或將廣告大小調整爲0px(用戶可能會這樣做在應用程序工作區中獲得更多房地產)。爲了防止這種情況發生,我正在考慮定期檢查包含廣告的div的屬性(包括CSS樣式)是否發生變化,以及是否重新加載頁面。由於我依賴於某個繪圖的畫布元素,重新加載對用戶來說會相當惱人,因爲它會清除畫布,所以除非廣告被篡改,否則我不想這樣做。檢測用戶篡改DOM

我見過一些跟蹤DOM變化的類似問題,那裏的人們建議使用突變事件。然而,根據這些答案,似乎並不是所有瀏覽器都支持這種支持(然後我再次看到的線索是2008年和2009年的,因此從那時起事情可能會發生變化)。

我正在考慮的另一種替代方法是在頁面完成加載後,在廣告的div的offsetWidth,offsetHeight,offsetTop,offsetLeft中進行讀取,並且持續地將它們與當前值進行比較(沒有太多可以做的事情如果你不能移動div,就會讓div消失)。

你們有什麼建議?

+1

如果你不能篡改DOM,Web開發將不會變得有趣。 – mrk 2011-06-15 03:55:31

+1

如果用戶可能會這樣做以獲得更多房地產,您是否可以阻止(修復可用區域的寬度)來消除該原因? – 2011-06-15 04:05:19

+0

謝謝@Don,這就是我最終做的。如果廣告在那裏,我有幾個div可以調整大小,所以即使用戶刪除了廣告,也不會有任何好處,除非js代碼被修改,或者用戶修改了多個其他div,並且不會事後調整窗口大小。雖然其他人提出了非常有效的觀點,但我不同意他們已經回答了這個問題。如果我StackOverflow讓我接受評論作爲解決方案,我會接受你的評論:) – 2011-06-15 19:03:57

回答

6

你永遠不會停止對DOM檢查員足夠滿意的人這樣做。它甚至不值得貓和老鼠的遊戲。 99.999%的用戶如果意外地訪問了DOM檢查員,他們可能會打電話給技術支持。

+4

+1如果您可以用這種方式篡改DOM,您還可以操縱嘗試檢測操作的Javascript。 – deceze 2011-06-15 03:05:55

+1

+1你甚至不應該稱之爲'篡改' - 你爲用戶提供了DOM,他們可以在他們的客戶端上做他們喜歡的事情。就像這些人說的 - 很少有用戶甚至會認爲刪除廣告是可能的。 – Beejamin 2011-06-15 03:12:29

+0

沒錯,但是調整DOM需要幾秒鐘(這是最外面的div之一),調整javascript實際上需要用戶研究代碼(對於廣告來說這通常不值得付出努力) 。我明白,完全防止這種情況是不可能的,但我希望添加一個簡單的檢查來防止明顯的漏洞利用。 – 2011-06-15 03:15:17

6

如果訪問者使用帶有Adblock的Firefox說,您的橫幅永遠不會出現在頁面中,因此不會分派突變事件。您可以查看樣式屬性並重新加載頁面,但不會顯示廣告。不斷重新加載的頁面會讓用戶惱火,所以他們會離開。

如果你確定,那就去做吧。否則,要意識到禁用廣告的任何人無論如何都不會對此做出反應,所以有什麼意義?

+0

感謝@RobG,我甚至沒有想到Adblock,你說得對,突變事件在這種情況下是行不通的。至於禁用廣告,重點不在於我希望他們點擊它,關鍵是如果擺脫​​廣告比他們的信用更容易讓他們獲得付費版本的我的應用程序沒有動機卡信息。 – 2011-06-15 19:07:25