这是我今天遇到的最令人困惑的部分,我正在使用codeigniter,但它的xss过滤器似乎没有像我们预期的那样正常工作,所以我们尝试使用htmlentities同时将数据保存到数据库中,但我读了在某个地方,我们永远不应该将用户输入的数据更改/编辑到数据库中,我们应该在浏览器上输出时始终这样做,所以在这里我完全混淆了最安全和最好的方式来获取用户输入,保存在数据库和使用php输出该数据
答案 0 :(得分:1)
您对CI XSS过滤的期望是什么,您认为它无法正常工作?
要回答您的问题,请按以下步骤操作:
首先验证用户输入数据(在使用它之前),而不是过滤和更正它,使用CodeIgniter Form Validation Class
执行此操作
指南链接:https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html
对于数据库查询,请使用CodeIgniter Active Record Class
,所有数据都会自动转义
例如$this->db->insert('mytable', $data);
指南链接:https://ellislab.com/codeigniter/user-guide/database/active_record.html
从数据库或其他任何地方回显用户输入数据使用CodeIgniter html_escape()
功能
你很高兴......
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
答案 1 :(得分:0)
这取决于你的意图。如果有人在不了解您的项目的情况下告诉您不应该修改用户的输入,那么他或她就是bullsh1tt1ng。你需要问自己正确的问题:
但最重要的是,你的问题应该是: 是否有任何有效的潜在原因可以验证用户注入脚本的尝试?