2014-06-28 70 views
1

我正在php中創建一個網站。其中一項功能是用戶可以通過輸入自定義html代碼來編輯自己的頁面。現在,您可以將代碼輸入到textarea中,並將其顯示在div中。將來,我計劃爲用戶添加更多有用的工具。自定義用戶HTML輸入安全

我的問題是如何保護我的網站免受惡意代碼的侵害。我知道Facebook可以選擇將自定義HTML放在頁面標籤中,以便安全地完成。目前,HTML正在通過一個PHP腳本顯示在頁面上,以便用戶可以在<script>標籤中輸入javascript。我不知道javascript和html的完整限制,但我知道,嵌入到網站中的自定義JavaScript有可能導致事情發生。

這裏是我的想法而已:易

  • 缺點:

    • 從用戶代碼

      • 優點刪除所有JavaScript的用戶不能做什麼有趣的JavaScript
    • 將javascript限制爲僅在顯示div內執行

      • 優點:安全自定義JavaScript
      • 缺點:可能不可能/非常困難

    如果任何人有關於如何做到這一點或Facebook是如何做到這一點,我喜歡思想知道!提前致謝。

  • +0

    如果他們允許Javascript,他們幾乎肯定會把它放在一個'iframe'中,以便它不會訪問主頁面。 – Barmar

    +0

    我會把它放在一個iFrame中,但我希望html在iframe中沒有css約束。 – Harrison

    回答

    2

    如果您使用的是PHP,一個優秀的解決方案是使用HTMLPurifier。它有很多選項來過濾不好的東西,並且作爲副作用,可以保證格式良好的html輸出。

    +0

    這看起來非常有用,謝謝! – Harrison

    +0

    @Harrison:您應該將其與內容安全策略結合使用,以防將來發現任何HTMLPurifier中的漏洞:http://security.stackexchange.com/a/61134/8340 – SilverlightFox