PHP 安全攻防,实体转义

一、恶意攻击
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);
		}
	*/
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值