防止xss+sql注入的问题?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

防止xss+sql注入的问题?报错

爱吃鱼的程序员 2020-06-09 13:41:23 53

刚看了一个放xss和sql注入的文章:
框架类型或者有公共文件的,建议在公共文件中统一做一次XSS和SQL注入的过滤。写个过滤函数,可由如下所示:
$_REQUEST = filter_xss($_REQUEST);
$_GET = filter_xss($_GET);
$_POST = filter_xss($_POST);
$_COOKIE = filter_xss($_COOKIE);
$_POST = filter_sql($_POST);
$_GET = filter_sql($_GET);
$_COOKIE = filter_sql($_COOKIE);
$_REQUEST = filter_sql($_REQUEST);


最简单的filter_xss函数是htmlspecialchars()
最简单的filter_sql函数是mysql_real_escape_string()
当然,谁都知道这种过滤filter_sql只能过滤字符型和搜索型的注入,对于数字型是没有办法的,但也说明做了这层过滤后,只需在后面注意数字型的SQL语句就可以了,遇到了加intval过滤就可以了,这就变得容易多了.

我直接使用htmlspecialchars($_POST)或mysql_real_escape_string($_POST)会报错,因为这两个函数转换的类型是字符串类型的,而$_post.....是数组类型的.按照这个思路我该怎么做xss和sql语句的过滤了?


SQL
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-09 13:41:40

    开源Web应用最常见漏洞和防御方法:
    1.XSS(跨站脚本攻击):htmlspecialchars/HTMLPurifier过滤后输出
    2.SQL注入:预处理参数化查询
    3.远程和本地文件包含漏洞:allow_url_fopen=On(默认值)include($_GET['file']);这样做是危险的.
    4.跨站请求伪造CSRF:操作加上csrf_token或者验证码(csrf_token可以放在URL的get参数里,表单的隐藏域里,或者AJAX的参数里)
    5.远程命令执行(RCE)命令注入

    xss和注入的防御思路完全不一样

    另外楼主的方案至少是10年以前的,早已落伍

    对于注入,使用PDO或者mysqli的prepare方式来解决

    对于XSS,请使用#<spanstyle="font-family:Verdana,sans-serif,宋体;font-size:13.3333px;line-height:21.3333px;background-color:#FFFFFF;">HTMLPurifier# 

    不拼接sql不完了吗?过滤毛线啊有时拼SQL也无妨,比如:var_export($db->query('SELECT*FROMlogsWHEREid='.intval($_GET['id']))->fetchAll(PDO::FETCH_ASSOC));用intval把用户输入强制转整数即可.

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题