使用 Codeigniters 验证库是加强安全性的第一步。您应该使用它来删除任何无效字符(HTML、潜在的 XSS/SQL 攻击等)。
根据您的要求:
strip_tags
- 删除任何 HTML 标签
xss_clean
- 删除任何潜在的 xss 攻击字符串
alpha_numeric
为了防止 SQL 注入攻击,您还可以在验证规则中使用类似的东西,通过只允许字母数字字符来防止潜在的危险字符。
防止 SQL 注入的另一种方法是在向数据库传递和检索数据时使用 Codeigniters 活动记录库。如果您按预期使用 Codeigniters 活动记录,它将自动删除可用于 SQL 注入攻击的危险字符。
方法一(去除无效字符)——利用活动记录库 WHERE 函数参数
$query = $this->db->where('username', $username);
$query = $this->db->get('users');
方法二(无保护)——直接写where语句
$this->db->where('username = '.$username);
$query = $this->db->get('users');
方法3(无保护)——将整个SQL语句直接写入查询函数
$this->db->query('SELECT * FROM users WHERE username = '.$username);
当不使用活动记录库时,codeigniter 提供了转义字符串的功能(使它们可以安全地输入数据库)。
$this->db->escape() 该函数确定数据类型,使其只能转义字符串数据。它还会自动在数据周围添加单引号,因此您不必:
示例用法:
$this->db->query('SELECT * FROM users WHERE username = '.$this->db->escape($username));
参考:http ://codeigniter.com/user_guide/database/queries.html