cURL可以使用URL的语法模拟浏览器来传输数据,
因为它是模拟浏览器,因此它同样支持多种协议:
FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持。
在开发中经常会使用curl来获取网络资源,可能会带来两方面的问题:
1、SSRF,通过请求来分析内网架构,并进行攻击。
2、文件读取,使用file协议来读取本地文件。例如:file:///etc/passwd。
修复:
使用 parse_url 来解析 url
1、限制请求的域名。
2、限制请求的协议(这一点经常会忘记)。