Section outline

  • 这部分的内容仅供参考,并无特定任务。它展示了 Elgg 如何防御 XSS 攻击。Elgg 确实有内置的防范措施,但我们已经关掉了这些措施以便攻击成功。Elgg 使用了两种防范措施。一个是安全插件 HTMLawed,它可以验证用户输入并从中删除危险的内容。我们已经在 input.php 文件中的 filter_tags() 函数内部注释掉了对插件的调用,该文件位于 vendor/elgg/elgg/engine/lib/ 目录下。请参见以下内容:
    function filter_tags($var) {
       // return elgg_trigger_plugin_hook('validate', 'input', null, $var);
       return $var;
    }

    除了 HTMLawed,Elgg 还使用了 PHP 内置的 htmlspecialchars() 来对用户输入中的特殊字符进行编码。例如,将 "<" 变成 "&lt", ">" 变成 "&gt" 等。这种方法在 dropdown.php, text.php 和 url.php 文件中被调用(这些文件位于 vendor/elgg/elgg/views/default/output/ 目录下)。我们注释掉了它们,以关闭防范措施。
     
    抵御 XSS 攻击的更通用的方法是使用内容安全策略(CSP,Content Security Policy)。关于 CSP,我们有一个专门的实验。