程序员必备入门:10种常见安全漏洞浅析
1.1 什么是SQL注入?SQL注入是一种代码注入技术,一般被应用于攻击web应用程序。它通过在web应用接口传入一些特殊参数字符,来欺骗应用服务器,执行恶意的SQL命令,以达到非法获取系统信息的目的。它目前是黑客对数据库进行攻击的最常用手段之一。 1.2 SQL注入是如何攻击的?
举个常见的业务场景:在web表单搜索框输入员工名字,然后后台查询出对应名字的员工。 这种场景下,一般都是前端页面把一个名字参数name传到后台,然后后台通过SQL把结果查询出来
因为SQL是直接拼接的,如果我们完全信任前端传的参数的话。假如前端传这么一个参数时'' or '1'='1',SQL就变成酱紫的啦。
这个SQL会把所有的员工信息全都查出来了,酱紫请求用户已经越权啦。请求者可以获取所有员工的信息,其他用户信息已经暴露了啦。 1.3 如何预防SQL注入问题1.3.1 使用#{}而不是${} 在MyBatis中,使用#{}而不是${},可以很大程度防止sql注入。
1.3.2 不要暴露一些不必要的日志或者安全信息,比如避免直接响应一些sql异常信息。 如果SQL发生异常了,不要把这些信息暴露响应给用户,可以自定义异常进行响应 1.3.3 不相信任何外部输入参数,过滤参数中含有的一些数据库关键词关键词 可以加个参数校验过滤的方法,过滤union,or等数据库关键词 1.3.4 适当的权限控制
在你查询信息时,先校验下当前用户是否有这个权限。比如说,实现代码的时候,可以让用户多传一个企业Id什么的,或者获取当前用户的session信息等,在查询前,先校验一下当前用户是否是这个企业下的等等,是的话才有这个查询员工的权限。 (编辑:唐山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


