枚举批量提交

  • 接口类
    话题pk、点赞、投票、打分
  • 表单类
    调研答题、病例上传表单、评论提交、其他表单

场景描述:

获取到接口参数或者表单参数,可以模拟批量请求提交。

在点赞、投票等的情况下可以循环枚举nid参数,可以达到批量操作。

防范措施:

  • 接口增加token参数控制,且控制接口请求次数。
  • drupal框架下可以使用drupal_get_token($nid)生成用户+内容id的唯一token值,
  • 使用腾讯防水墙或极验验证对请求次数进行控制

XSS攻击

  • 表单字段
  • url参数

场景描述:

  • 存储型XSS:存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
  • 反射型XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
  • 前端XSS:用户输入某个字段时前端实时把输入框的内容赋值在页面别处显示,直接导致XSS生效。

例如:

在输入框中录入<script>alert(cookie)</script> 或者 <img scr=1 onerror=alert(cookie)> ,在页面访问的时候就会执行alert打印cookie值出来;

改写url参数,后续在页面上输入时达到同上效果,常见于搜索功能。

防范措施:

用户的输入的数据永远都不可信

  • 前端XSS的场景需要前端开发使用escapeHTML()函数进行转义;
  • 后端需要对用户输入的信息进行特殊标签过滤,以及进行转义处理。
  • drupal框架下可以使用filter_xss()函数对危险标签进行过滤,以及使用check_plain()进行转义处理

参考百科:

  • https://baike.baidu.com/item/xss/917356
  • https://baike.baidu.com/item/XSS%E6%94%BB%E5%87%BB/954065?fr=aladdin
  • https://juejin.im/post/5bad9140e51d450e935c6d64

CSRF

场景描述:

==跨站请求伪造==,攻击者盗用了你的身份,以你的名义发送恶意请求。

比如用户登录了A站点,再访问了攻击者的B站点网页,B站点网页里面隐藏了一个A站点的请求接口/表单提交,这样相当于用户无感知的执行了请求接口/表单提交。

https://www.cnblogs.com/wangyuyu/p/3388169.html

防范措施:

referer校验和token处理:

  • 校验请求来源referer,在”请求接口/表单提交“的后端业务逻辑,进行http_referer校验,这里特别说明必须使用parse_url()中的host参数来做判断,不能简单的使用strpos做判断;
  • 使用随机token,在”请求接口/表单提交“时额外增加随机token参数,此token值必须是随机的且攻击者无法逆算出来的

越权

场景描述:

  • 越权修改,比如个人信息修改user/10/edit,拼接地址user/11/edit可以修改别人的信息,或者在接口中伪造参数值直接提交,或者模拟超管权限才能的操作;
  • 越权查看,比如拼接url参数访问,个人上传的病例内容是 case/id/10,拼接地址case/id/11访问到别人上传的病例信息;
  • 遮罩层隐藏,简单的在页面上使用遮罩层隐藏页面内容,使用浏览器控制台删除遮罩层就能看到了页面内容。
    比如指定身份/登录才能访问的站点,但前端只在任何页面上简单的遮罩层和一个弹窗,没有达到隐藏的实际效果。

防范措施:

严格控制页面访问的权限,以及接口提交的数据权限控制;

遮罩层隐藏的场景必须新建的独立页面,其他权限控制下重定向到新的页面。

URL重定向

场景描述:

在域名后面,比如www.kissfree.cn?redirect=www.baidu.com,这样就能伪造从安全站点重定向危害站点

防范措施:

必须对重定向的url参数做白名单域名校验,特别说明必须使用parse_url()中的host参数来做判断,不能简单的使用strpos做判断

短信/邮件轰炸

场景描述:

需要填写手机号码/邮箱的且下发验证码的表单

防范措施:

  • 使用post方式,
  • 控制下发验证码的次数,使用 腾讯防水墙或极验验证 对请求次数进行控制

暴力破解

场景描述:

因没有控制请求次数,可以无限请求进行枚举破解。

  • 比如需要手机号码白名单登录的地方,可以无限提交,枚举手机号码进行登录破解;
  • 比如手机短信验证码,使用别人的手机号码,然后无限提交枚举出短信码。

防范措施:

  • 设置请求间隔时间,比如手机短信后端设置单位时间内不重复发送。
  • 使用 腾讯防水墙或极验验证 对请求次数进行控制,超过次数锁定此账号一段时间。

信息泄露

场景描述:

  • 展示用户名称/手机号码的地方
  • 线上报错页面

防范措施:

  • 用户名称/手机号码必须做打星处理,比如abc***df,133*****555
  • 线上一定要APP_DEBUG=false,或者不显示任何错误信息,交给自定义异常去捕获

SQL注入

防范措施

  • 对请求的参数进行类型校验,string类型参数必须使用filter_xss()进行过滤;
  • 对修改/插入字段进行字符串转义;
  • 禁止直接拼接SQL执行,使用占位符方式。
分类: 后端

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注