本文目录一览:
- 1、php怎样使用参数化防止sql注入
- 2、PHP定义一个函数,用参数化查询防止注入。
- 3、ThinkPHP如何防止SQL注入?
- 4、php防止sql注入以及xss跨站脚本攻击
- 5、php如何防止sql注入?
php怎样使用参数化防止sql注入
可以使用php的pdo对象,有预处理查询功能可以防止注入,再有,注入sql无非就是基于你sql的拼接问题影响的执行sql,也可以不用pdo预处理,把获取查询的参数里面的非法字符比如单引号双引号等这些字符手动过滤也可以的
PHP定义一个函数,用参数化查询防止注入。
$filters = [
["filter"=FILTER_SANITIZE_STRING],
["filter"=FILTER_SANITIZE_STRING],
["filter"=FILTER_VALIDATE_INT]
];
$b_result = filter_input_array($b,$filters);
ThinkPHP如何防止SQL注入?
(1)查询条件尽量使用数组方式,这是更为安全的方式;
(2)如果不得已必须使用字符串查询条件,使用预处理机制;
(3)使用绑定参数;
(4)强制进行字段类型验证,可以对数值数据类型做强制转换;
(5)使用自动验证和自动完成机制进行针对应用的自定义过滤;
(6)使用字段类型检查、自动验证和自动完成机制等避免恶意数据的输入;
(7)做一些过滤。
php防止sql注入以及xss跨站脚本攻击
1.post数据
封装转义函数 防sql注入 eag:addslashes($username);addslashes($password);
eag:防止sql注入函数封装
function deepslashes($data){
#判断$data的表现形式 并且需要处理空的情况
if(empty($data)){
return($data);
}
#高级简写 return is_array($data) ? array_map('deepslashes',$data) : addslashes($data);
#初级写法
if(is_array($data)){
#递归循环遍历处理多维数组
foreach ($data as $v) {
return deepslashes($v);
}
}else{
#单一变量
return addslashes($data);
}
#初级写法
}
2.get数据
指url 传参数导致sql发生改变
解决方案
①强制转换,使用函数intval 或者 数据类型 的关键字int
②隐式转换,通过运算,只需要+0即可
3.xss跨站脚本攻击
指恶意攻击向web页面插入html、js标签导致页面出现错误
解决方案
转义标签'' ''即可,有以下php函数可解决
htmlspecialchars 函数 和 htmlentites函数
eag:
function deepslashes($data){
#判断$data的表现形式 并且需要处理空的情况
if(empty($data)){
return($data);
}
return is_array($data) ? array_map('deepslashes',$data) : htmlspecialchars ($data);
}
php如何防止sql注入?
额,这是我老师给的答案\x0d\x0a \x0d\x0a答:过滤一些常见的数据库操作关键字,\x0d\x0a select ,insert,update,delete,and,*等或通过系统函数addslashes对内容进行过滤\x0d\x0aphp配置文件中register_globals=off;设置为关闭状态.(作用将注册全局变量关闭);如接收POST表单的值使用$_POST['user'],假设设置为ON的话$user才接收值\x0d\x0asql语句书写的时候尽量不要省略小引号(tab上面那个)和单引号\x0d\x0a提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,使之不易被猜中\x0d\x0a对于常的方法加以封装,避免直接暴漏SQL语句\x0d\x0a开启PHP安全模式safe_mode=on\x0d\x0a打开magic_quotes_gpc来防止SQL注入,默认为关闭,开启后自动把用户提交sql查询语句进行转换把"'"转换成"\'"\x0d\x0a控制错误信息输出,关闭错误信息提示,将错误信息写到系统日志\x0d\x0a使用MYSQLI或PDO预处理