2009-11-09 63 views
1

我已經使用HTML purifier來清除任何可疑的東西從我面向公衆的所見即所得編輯器進來。傳入的HTML也顯示在網站的公共部分。使用HTML淨化器來停止鏈接到自己的網站

我已經允許鏈接,並且我還自動鏈接以純文本的URL(使用淨化器)。

有沒有辦法允許外部鏈接,但禁止鏈接到同一個域?例如,我的域名是www.example.com

http://www.google.com將被鏈接。

http://www.example.com/logout/將不會被鏈接。

我正在尋找最小化來自惡意用戶的干擾。我應該只是使用POST鍵/值對的表單操作來使我的註銷鏈接停止發生?

謝謝

回答

3

您的登錄/表單應始終爲POST-only。

不要擔心驗證值,但這是一個非常重要的安全問題 - 任何更改Web服務器狀態的事務都應該是POST請求。您絕不應該允許http://example.com/object?action=delete或其任何變體。 PHP鼓勵在這個問題上的不好的做法,但你應該總是使用其中一個,而且絕不允許這兩者。

如果您的用戶可以將表單寫入您的所見即所得編輯器,那麼您遇到的問題遠遠大於此。

要回答你原來的問題,禁止內部鏈接,使用URI.HostBlacklist並且一定要設置URI.MakeAbsolute

http://htmlpurifier.org/live/configdoc/plain.html#URI.HostBlacklist

+1

執行不僅僅是顯示數據應該總是後唯一的其他行動的所有URL。 – 2009-11-09 05:45:54

+0

+1感謝您的回答。但我仍然對此感興趣,想知道是否可以阻止從HTML淨化器內鏈接到我的域的用戶。 – alex 2009-11-09 05:46:09

+0

編輯添加該問題的答案。 – 2009-11-09 05:49:33