CSRF(Cross-Site Request Forgery)原理:CSRF是一种由攻击者构造形成,由服务端发起请求的一个安全漏洞。它是一种利用用户在已登录的网站中提交非法请求的行为,攻击者通过伪造用户提交的请求,将恶意请求发送至受信任的网站,导致用户在不知情的情况下执行恶意操作。
SSRF(Server Side Request Forgery)原理:SSRF是一种服务器端请求伪造的安全漏洞。它是由攻击者构造形成,由服务端发起的请求。由于服务端对用户提供的可控URL地址过于信任,没有经过严格检测,攻击者可以以此为跳板攻击内网或其他服务器。
两者区别:CSRF是用户端发起请求,攻击者利用用户的Cookie信息伪造用户请求发送至服务器;而SSRF是服务端发起的请求,攻击者通过构造指定URL地址获取网页文本内容、加载指定地址的图片、下载等方式,利用存在缺陷的Web应用作为代理攻击远程和本地的服务器。
在防御方面,可以采用以下方法:
1.禁止跳转;
2.过滤返回信息,验证远程服务器对请求的响应是否符合标准;
3.禁用不需要的协议,如file://, gopher://, ftp://等;
4.设置URL白名单或限制内网IP(使用gethostbyname()判断是否为内网IP);
5.限制请求的端口为http常用的端口,例如80、443、8080、8090等;
6.统一错误信息,避免用户根据错误信息判断远端服务器的端口状态。