常见的安全漏洞包括 XSS (跨站脚本攻击)、CSRF (跨站请求伪造)、SQL 注入、目录遍历、参数修改等等
1、参数修改
1.1 漏洞描述
参数修改常见的有2种方式:直接 URL 参数修改、拦截请求参数修改
例如:某网站 url 格式如下:http://xxx.com/FYBXSQ/imagelist.aspx?Id=xxxx&wyz=xxxx 在修改 Id 参数后,可以直接查看他人发票/身份证信息(逻辑上本不允许)。那么遍历这些 Id,就可以收集很多敏感的信息
1.2 如何防范?
参数修改防范:
- 双向验证,客户端验证,服务器端验证
- 传参加密
- 关键信息保存到数据库,不要保存到前端和cookie,session中
暴力攻击防范:
- 使用验证码
- 对频繁请求,拒绝链接
- 密码输入错误,锁定账号
避免报错信息显示敏感信息,报错信息不要太明确(比如:用户名或密码错误)
2、目录遍历
2.1 漏洞描述
程序没有充分过滤用户输入的 ../ 之类的目录跳转符,导致用户可以通过提交目录跳转来遍历服务器上的任意文件。使用多个 .. 符号,不断向上跳转,最终停留在根 /,通过绝对路径去读取任意文件。
危害:读取敏感配置文件信息(数据库文件等)、可能造成源码文件泄露(一些管理员可能整站打包成 zip)
2.2 如何防范?
对用户的输入进行验证,特别是路径替代字符如“../”和“~/”
- 尽可能采用白名单的形式,验证所有的输入
- 合理配置 Web 服务器的目录权限
- 当程序出错时,不要显示内部相关配置细节
- 对用户传过来的文件名参数进行统一编码,对包含恶意字符或者空字符的参数进行拒绝
3、SQL注入
3.1 漏洞描述
SQL 注入即是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息3.1.1 危害
- 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露
- 网页篡改:通过操作数据库对特定网页进行篡改
- 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击
- 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改
3.2 如何防范?
- 对进入数据库的特殊字符(单双引号 尖括号等)进行编码转换
- 不要使用动态拼装 SQL,使用参数化 SQL
- 不要使用管理员权限的数据连接,最好为每个应用使用单独的数据库连接
- 应用异常信息尽量给出少的提示,最好自定义报错信息对原始报错信息进行包装
4、安全测试工具
使用工具可以粗略找到 app 中的安全问题,找到常见的易发现的安全问题,对测试人员的技能要求比较低。但是工具可能存在误报,也需要人为去验证4.1 WebGoat
WebGoat 是 OWASP 组织研制出的用于进行 web 漏洞实验的应用平台,用来说明 web 应用中存在的安全漏洞
WebGoat 运行在带有 java 虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话 cookie、SQL 盲注、数字型 SQL注入、字符串型 SQL注入、web 服务、Open Authentication 失效、危险的 HTML 注释等等。4.2 BurpSuite
Burp Suite 是用于攻击 web 应用程序的集成平台,包含了许多工具。Burp Suite 为这些工具设计了许多接口,以加快攻击应用程序的过程
