【问题标题】:Allowing user-supplied <iframe>s without risking XSS?允许用户提供 <iframe> 而不冒 XSS 风险?
【发布时间】:2012-01-19 18:35:24
【问题描述】:

我的网站允许写博客,我在博文中使用 textarea,我需要允许用户分享 youtube 视频之类的内容(我需要允许 iframe 标签这样做)或使用 img 标签或使用显示图像通过允许 a 标签链接,问题是我需要保护网站免受 XXS 攻击,这就是为什么我害怕允许这些标签,有什么解决方法可以做到这一点吗?

我可以使用这样的东西吗:

<?php
   $string = "<b>hello world!</b>";
   echo "without filtering:".$string;
   echo "<br>";
   $filtered = htmlspecialchars($string); // insert into database filtered
   echo "After filtering:".$filtered;
   echo "<br>";
   $de_filtering = htmlspecialchars_decode($filtered); //retrieve from database and display
   echo "After de-filtering:".$de_filtering;        
  ?>

有可能吗?

【问题讨论】:

    标签: php xss


    【解决方案1】:

    新发布的 HTMPurifier 4.4 添加了一个功能来实现这一点。

    http://htmlpurifier.org/phorum/read.php?5,5319,5555#msg-5555

    简而言之,您应该允许来自受信任域的 iframe。来自不受信任域的 iframe 可能包含恶意 javascript/flash/embeds

    【讨论】:

      【解决方案2】:

      我非常推荐使用预建的rich text editor。构建自己的将是一个漫长的过程,并且可能非常繁琐。 TinyMCE(在 GPL 许可下)是一种非常受欢迎的方法,CKEditor 也是如此(尽管它需要花钱)。还有更多,但我绝对建议使用现有的而不是自己构建。

      关于防止某些 XSS 攻击,您可以查看 couple different locations 以获取有关 XSS 的信息。一些好的基本东西总是清理一切,并总是假设某些东西被劫持了。在验证用户的输入是否符合您的预期之前,请不要相信它。

      【讨论】:

        猜你喜欢
        • 2015-05-07
        • 2012-01-03
        • 2011-01-07
        • 2013-06-28
        • 2017-07-08
        • 2014-01-19
        • 2018-04-25
        • 1970-01-01
        • 2016-03-16
        相关资源
        最近更新 更多