当我们开发一个新功能的时候,一定要考虑这段代码或者这个功能是否有被他人攻击利用的可能。
越权
通俗解释就是操作或者访问非自己权限下面的数据,越权的手段有很多种。
任意密码修改
一般密码修改有很多漏洞,有逻辑上的,有流程上的。例如有些网站根据短信验证码去验证修改密码的权限,
但是调用接口的时候却把验证吗和接口一块返回,这算是比较低级的漏洞了,当然类似的情况有很多。
任意用户相关信息增删改
当某些关键信息只能某个用户查看或者操作的时候,我们就需要校验权限了,不能根据唯一id去确定权限,某些情况下面
唯一id是可以伪造的,比如查看订单详情,如果没有校验这个订单id是否属于某个人就存在越权的操作。
上传文件漏洞
公司都有自己的文件存储服务器,但是也需要对上传的文件做些必要的校验
格式检验
对所有上传的文件格式都要限制死,前后端都要检验。
比如如果用户上传的是个html,那么微信分享出去的地址前缀域名就是公司的域名,会有可能被微信封住域名。
SSRF漏洞
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
利用一个可以发起网络请求的服务当作跳板来攻击内部其他服务
(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
例如:http://www.a.com?url=xxxx,如果这个url算是参数,那么就是问题了,如果我们
根据这个参数url进行get或者post请求,就可能发生SSRF攻击。
以下业务场景容易出现这种漏洞:
1、应用从用户指定的url获取图片。然后把它用一个随即文件名保存在硬盘上,并展示给用户;
2、应用获取用户制定url的数据(文件或者html)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据;
3、应用根据用户提供的URL,抓取用户的web站点,并且自动生成移动wap站;
4、应用提供测速功能,能够根据用户提供的URL,访问目标站点,以获取其在对应经纬度的访问速度;
xss漏洞
1.假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
2.不要仅仅验证数据的类型,还要验证其格式、长度、范围和内容(跨站脚本攻击内容常见包含的恶意字符包括 ,&,",',[,] 等字符,可对此类字符进行安全过滤,可用的服务端过滤方法如下:php htmlspecialchars())。
3.不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
4.对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
5.在网站发布之前建议测试所有已知的威胁。