前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅析漏洞防范

浅析漏洞防范

作者头像
字节脉搏实验室
发布2020-09-25 17:50:51
1.6K0
发布2020-09-25 17:50:51
举报

SQL注入漏洞:在编写操作数据库的代码时,将外部变量直接拼接到SQL语句中且没有经过任何过滤机制就放入数据库中执行。

魔术引号:

magic_quotes_gpc:负责对GET、POST、COOKIE的值进行过滤,然而在php6、7中已经取消了该函数,因此我们可以自己定义一个函数来为数据加上\,即将所有外部变量用addslashes函数过滤:

但这样也仅能防御部分注入,宽字节注入依旧会产生:

mysql_real_escape_string:负责对字符串进行过滤,但从php7就被移除了,这里还是举个例子:

当上文请求参数?id=1’是,会输出:select * from admin where id='1\''

intval等字符转换:在上面的方法中面对int型的注入并无效果,容易被通过报错和盲注的形式进行注入,这时候可以使用intval将外部变量转换为int型:

很明显,当请求参数?kid=1 union select 1,2,执行结果:

PDO prepare预编译:PHP pdo类似于.NET的SqlParameter或者java里的prepareStatement,都是通过预编译的方法来处理查询,如下代码中第5行,PDO::ATTR_EMULATE_PREPARES设置为false来禁止php进行本地模拟prepare,该行为会导致参数转义,gbk编码下依旧会产生SQL宽字节注入:

1.XSS漏洞:分为反射型,存储型,DOM型,Web应用读取危害代码并输出在页面上。

HTML实体转义:利用htmlspecialchars()函数,如下字符可被转义:

'、"、<>、\、:、&、#

标签事件属性白名单:通过对标签事件的白名单,即使用正则表达式来匹配,如果匹配到的事件不在白名单内,直接拦截,而不是将其替换为空。

3. ###### CSRF漏洞:劫持其他用户进行某些恶意请求。

token验证:令牌是防范CSRF较好的一种方式,简单地理解就是在页面或者COOKIE中添加一段不可猜解的字符串,而服务器在接收用户请求时会验证该字符串是否为上次访问留下的即可判断是否为非法请求,如果用户没有访问上一个页面,token是很难获取到的:

首次访问页面时token验证失败,因为我们从未打开这页面,token也还没获取

而当我们提交相同的token时:

验证码验证:这对于用户的体验会产生影响,不可能每个页面都要求用户去填写验证码,因此应用场景类似于登录页面。

1.文件上传漏洞:用户上传文件,文件后缀名并未被服务端严格检查,导致传入可被服务器解析的恶意脚本。

白名单过滤文件拓展名:比如使用in_array或者===来校拓展名

重命名文件,采用时间戳拼接随机数等方式:

1.代码执行漏洞:应用程序本身过滤不严,导致用户通过请求将代码注入应用中并执行。

采用白名单过滤参数,以该代码举例:

假设我们知道\2的范围是纯数字,那么将正则改为:

1.命令执行漏洞:相关的命令执行函数内参数过滤不严导致用户可以执行系统或者应用命令。

escapeshellarg ( string arg ) : string:在字符串周围添加单引号,并附加引号,然后从字符串中转义单引号。这样使得arg在确保最大安全性的同时,将参数直接作为Shell参数传递,简单来说就是过滤参数,将参数限制在一对双引号里,此时再引入其他字符串会转为空格:

escapeshellcmd ( string $command ) : string:

escapeshellcmd()转义字符串command 中在shell命令中可能具有特殊含义的所有字符。此函数可确保将命令正确传递给Shell exec()和 system()命令执行程序 ,或带有反斜杠标记。过滤的字符为:&;|`*?~<>^()[]{}$\ \x0A \xFF %,而’、"仅仅在不成对的时候被转义,可以看到escapeshellcmd 分别在Windows和Linux会添加

参数白名单:参数白名单是一种比较通用的修复方法,利用正则表达式即可,这里边不再记录。

7. ##### 变量覆盖漏洞:函数使用不当。

有个不错的例子我记录下来:

上图代码,假使我们提交参数?a=2那么

使用初始变量:不进行变量注册,直接使用初始的$_GET之类的变量进行操作,若需要注册,则可以在代码中定义变量,然后在请求中赋值。

验证变量是否存在,可以使用if语句,也可以使用extract函数的第二个参数EXTR_SKIP或者parse_str函数。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档