PHP 安全攻防,实体转义

来源:互联网 发布:软件防火墙通过 编辑:程序博客网 时间:2024/05/18 02:16

一、恶意攻击
Post灌水:  解决:加入隐藏字段  <input type="hidden" name="po" value="va" >
验证码。验证码不显示的原因:1.编码:utf-8;  2. header('Content-type:image/png'); header头前面不允许有空格,在所有<?php ?>两端不能有多余的空格。

二、Sql注入
Post请求:表单中输入特殊字符 如:单引号。  解决:1.加密,md5。  2.转义单引号:站在php的角度用 addslashes()函数;站在mysq的角度用 mysql_real_escape_string()函数
Get请求:自行构造url,提交 加入关键字 or 1#。   解决:1.过滤关键字 or: 转换成int类型:  (int)变量  变量+0   intval()函数  

三、Xss攻击
脚本(Html)注入: <sctipt></script>  </table> 等。解决:1.实体转义  htmlspecialchars()函数、htmlentities()函数
注意:针对用户提交的所有数据(POST数据),都要进行实体转义。

批量实体转义辅助函数:

<?php//批量实体转义function deepspecialchars($data){if (empty($data)) {return $data;}//中高级程序员的写法return is_array($data) ? array_map('deepspecialchars',$data) : htmlspecialchars($data);/*//初级程序员的写法if (is_array($data)) {foreach ($data as $k => $v){$data[$k] = deepspecialchars($v);}return $data;} else {//单个变量return htmlspecialchars($data);}*/}


原创粉丝点击