【问题标题】:XSS clean in kohana 3.1kohana 3.1 中的 XSS 清理
【发布时间】:2011-04-14 12:07:34
【问题描述】:

我看到了将 xss clean 用于 kohana 旧版本的文档 http://docs.kohanaphp.com/general/security

但是如何在 kohana 3.1 中实现这一点 使用 htmlpurifier 和

的替代品
$this->input->get('my_var','default_value', true);

【问题讨论】:

  • 你永远不需要修改 get 中的数据。您需要在输出期间使用HTML::chars() 清理数据。并直接使用$_GET 访问get 变量。
  • $this->request->query() 更好;)
  • @biakaveron: 或$this->request->param()。出于某种原因从未使用过它。我的错。
  • @^ 我正在使用 ckeditor。所以我想允许用户有一些 html 标签。但是使用查询,会删除它吗?

标签: php kohana


【解决方案1】:

Rasmus 建议从 Kohana 中删除 XSS 黑名单,以便使用 htmlspecialchars() - HTML::chars() 转义输出或使用 HTMLpurifier 以防您确实需要让一些 HTML 进入。

自 3.1 起,Security 默认没有 xss_clean() 方法,您必须安装 shadowhand's HTMLpurifier 模块以保护输入字符串(通过从 github 添加子模块,将其放入模块并在引导程序中启用它)。

模块本身将覆盖默认的 Security 类并添加 xss_clean() 方法,该方法使用 HTMLpurifier 进行转义。该模块还有一个配置文件,您可以在其中设置应用程序级别的所有内容。由于许多原因,没有“自动”完成输入转义;开销、一致性等。

由于 Request 在此版本中几乎被重写以匹配 RFC 2616 并获得更强大的 HMVC,您将使用 Request::query() [$this->request->query() inside your controllers] 访问您的查询字符串变量,但是有在那一侧仍然没有进行转义(每个请求都可以有自己的标头、POST、GET 等)

逃避当前 POST 变量的最简单方法是:

$safe = Arr::map('Security::xss_clean', $this->request->post());

附: 不要太在意这里写的关于$this->request->param()的废话,它只是为了访问匹配的Route的参数,而不是你的GET或POST vars。

【讨论】:

    【解决方案2】:

    Kohana 框架的 HTMLPurifier 模块: https://github.com/shadowhand/purifier

    在引导程序中加载 de 模块并进行测试:

    $my_test = '<a href="#" onclick="window.location.href = \'http://google.com\'"></a>';
    echo Security::xss_clean($my_test);
    

    【讨论】:

    • 你真的懂php,你传给那个方法的是什么?
    • 回声安全::xss_clean($my_test);
    • 你应该在你的回答中这样写:)
    猜你喜欢
    • 2013-02-01
    • 1970-01-01
    • 2011-10-20
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多