0

这是我今天遇到的最令人困惑的部分,我正在使用 codeigniter,但它的 xss 过滤器似乎没有像我们预期的那样正常工作,所以我们在将数据保存到数据库时尝试使用 htmlentities,但我在某处读到,我们永远不应该将用户输入的数据更改/编辑到数据库中,我们应该在浏览器上输出时始终这样做,所以在这里我完全困惑什么是最安全和最好的方式来获取用户输入,保存在数据库中并输出该数据使用 php

4

2 回答 2

1

你对 CI XSS 过滤有什么期望,你认为它不能正常工作?

要回答您的问题,请按照以下所有步骤操作:

  1. 首先验证用户输入数据(并且在对其进行任何操作之前)而不是过滤和更正它,使用 CodeIgniter 执行此操作Form Validation Class

    指南链接:https ://ellislab.com/codeigniter/user-guide/libraries/form_validation.html

  2. 对于您的数据库查询使用 CodeIgniter Active Record Class,所有数据都会自动转义

    例如$this->db->insert('mytable', $data);

    指南链接:https ://ellislab.com/codeigniter/user-guide/database/active_record.html

  3. 要从数据库或其他任何地方回显用户输入数据html_escape(),请使用 CodeIgniter函数

你可以走了...

P.S. Links were for version 2.2, if you're using version 3, routine is the same but simply find the guide on codeigniter.com

于 2015-05-09T18:37:56.140 回答
0

这取决于你的意图。如果有人在不了解您的项目的情况下告诉您永远不应该修改用户的输入,那么他或她就是牛逼。你需要问自己正确的问题:

  • 我想在数据保存或数据加载时防止 xss?
  • 用户输入修改将如何影响用户体验?有什么问题吗?有自动修复吗?
  • 如果我在展示时防止 xss,是否有可能忘记任何地方?如果是这样,有没有办法消除这种潜在的安全漏洞?

但最重要的是,您的问题应该是: 是否有任何有效的潜在原因可以验证用户注入脚本的尝试?

于 2015-05-09T17:48:34.223 回答