求考虑安全问题的数据库操作经典例子
在接收任何数据到你的程序之前,不管是表单提交的 POST 数据、COOKIE 数据、URI 数据、XML-RPC 数据、还是 SERVER 数组中的数据,我们都推荐你实践下面的三个步骤:1.过滤不良数据.
2.验证数据以确保符合正确的类型, 长度, 大小等. (有时这一步骤也可取代第一步骤)
3.在提交数据到你的数据库之前将其转换.
遵循如上所述的例子,我貌似没有看到过。
希望各位大侠们,能够提供之。 笔记下:
使用AR操作数据库的时候 会自动地对用户输入的数据进行类型转义。。
即自动实现类似如下的功能$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";
所以不需要再考虑这个。 XSS 过滤直接使用 CI 提供的方法就可以了。 那我有个问题不解。
对数据库的操作 我如果使用AR的话
我先对数据进行验证 然后再进行xss过滤 最后操作数据库($this->db->get();$this->db->insert(),$this->db->update(),$this->db->delete()) 这样的流程就可以了吧? 插入数据操作总结:
1.使用xss过滤
例如:
$data = array('entry_id'=> $this->input->xss_clean($this->input->post('entry_id')),
'body' => $this->input->xss_clean($this->input->post('body')),
'author' => $this->input->xss_clean($this->input->post('author'))
) ;
2.使用AR类进行操作 (所有的值已经被自动转换为安全查询,所以不需要进行转义)
$this->db->insert('comments',$data) 基本上进行 xss 过滤就可以了。 非常感谢。附上自己下午的成果。。。http://codeigniter.org.cn/forums/viewthread.php?tid=4447&extra= 回复 5# hdusec
$this->input->xss_clean($this->input->post('body'));不需要这么复杂。
可以这样:
$this->input->post('some_data', TRUE);
第二个参数是可选的,如果想让取得的数据经过跨站脚本过滤(XSS Filtering),把第二个参数设为TRUE。 谢谢哈!!已查看文档,清楚了。
页:
[1]