1

我已经使用HTML 净化器清除了来自我面向公众的所见即所得编辑器的任何可疑内容。传入的 HTML 也会显示在网站的公共部分。

我已允许链接,并且我还自动以纯文本链接 URL(使用净化器)。

有没有办法允许外部链接,但禁止链接到同一个域?例如,我的域是 www.example.com

http://www.google.com将被链接。

http://www.example.com/logout/不会被链接。

我正在考虑尽量减少来自恶意用户的任何干扰。我应该让我的注销链接成为一个带有 POST 键/值对的表单操作来阻止这种情况发生吗?

谢谢

4

1 回答 1

3

您的登录/退出表单应始终为 POST-only。

不要担心验证值,但这是一个非常重要的安全问题 - 任何改变网络服务器状态的事务都应该是 POST 请求。您绝不应该允许http://example.com/object?action=delete或其任何变体。PHP 鼓励在这件事上做不好的做法,但你应该总是使用其中一个,并且永远不要同时允许。

如果您的用户可以将表单写入您的 WYSIWYG 编辑器,那么您将面临比这更大的问题。

要回答您的原始问题,禁用内部链接,请使用URI.HostBlacklist并确保设置URI.MakeAbsolute

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

于 2009-11-09T05:42:50.897 回答