使用HTML过滤停止指向自己的网站
-
18-09-2019 - |
题
我已经使用 HTML净化淘汰任何可疑的东西从我的面向公众的所见即所得的编辑器来英寸传入的HTML也被显示在网站的公共部分。
我已经允许链接,我也(使用净化器)自动linkify网址以纯文本。
有没有办法,让外部链接,但禁止链接到同一个域? E.g我的域是www.example.com
http://www.google.com 将被链接。
http://www.example.com/logout/ 不会链接。
我期待在减少恶意用户的任何干扰。我应该让我的注销链接与POST键/值对的形式采取行动,阻止这种情况发生?
由于
解决方案
您的登录/退出形式应该总是POST-仅
不要担心校验值,但是这是一个非常重要的安全问题 - 这改变了Web服务器的状态应该是POST请求的任何交易。你不应该允许 http://example.com/object?action=delete ,或任何变体。 PHP鼓励不好的做法,在这件事情,但你应该总是使用一个或另一个,决不允许两者。
如果您的用户可以编写形式到您的所见即所得的编辑器,你得远远更大的问题莫过于此。
要回答你原来的问题,禁止内部链接,使用URI.HostBlacklist
并且一定要设置URI.MakeAbsolute
:
http://htmlpurifier.org/live/configdoc/plain.html #URI.HostBlacklist
不隶属于 StackOverflow