1、XSS
典型的例子是在用户签名字段中输入html代码: <img url(/admin/users/delete/1 ... />
如果该数据被存储到系统中,然后拥有系统管理权限的人查看该用户信息,将导致误删除动作。
解决方法有:
public function saneHtml($check) {
return current($check) === strip_tags(current($check));
}
然后在各个model中使用该函数进行数据检验
public $validate = array(
'username' => array(
'notEmpty' => array(
'rule' => 'notEmpty',
'message' => 'This field cannot be left blank.',
),
'saneHtml' => array(
'rule' => 'saneHtml',
'message' => 'Some invalid characters were detected in your input',
),
),
)
2、欺骗性链接
被伪装的html短链接(某些短链接服务)发到系统管理员IM中,而其实际链接为危险的系统操作如/admin/users/delete/1,系统管理员在不知情的情况下点击该伪冒链接将导致删除用户的操作发生。
解决方法有
function admin_delete($id = null) {
if (!$this->RequestHandler->isPost()) {
$this->render();
return;
}
3、sql注入
通过在url中以sql语句替换某些参数,将导致系统被注入sql
解决方法有在post中strip掉sql特殊字符,或避免使用直接的sql语句,而是用CakePHP的find函数,会自动处理sql注入的问题。