您好,欢迎访问一九零五行业门户网

javascript - PHP cURL或者类似的客户端请求不算跨域,会不会不安全?有什么防范措施?

之前我以为php curl模拟请求也会有跨域限制的。
疑问在之前设计接口的时候,需要权限访问的敏感数据(例如需要登录后查看的个人数据)。我是会做token检测的。
但是其他的普通接口可以直接获取的,只是添加了跨域头,防止跨域调用,但是后面发现,通过php curl是能调用成功的。后面看了eechen的回答。如下:
同源策略防止跨域是浏览器中的安全机制.而php的curl可以看做一个命令行下的浏览器(客户端),不受任何限制,就像你用file_get_contents下载互联网上的东西一样随心所欲, 来源。
感觉这样设计会不会有点不合理?js ajax有跨域限制,php curl这种形式的则没有跨域限制。为什么当时确定跨域限制的时候,为什么不把php curl形式的也作为跨域限制?
那这样的形式又应该如何去防止跨域调用呢?
解决方案之前想做网易云客户端的时候,有看过网易云音乐的接口,是通过csrf_token防止跨域调用的。
ps:话说这种方案,貌似能够通过爬网页获取csrf_token,再进行跨域调用吧?
另外,还有什么方案能够解决这个问题吗?
期待大家的解答,谢谢!============ 10-27 15:51 ==============
sorry,我理解错了...我以为是php curl做了什么特殊处理。谢谢南小鸟的回答,其实就是相当于直接访问指定url,自然不会产生跨域问题...
那如果希望我的接口不能被外界访问呢?
在内网这种应该就不需要设置什么了。
在外网设置csrf_token,但我查了一些csrf_token的资料,貌似csrf_token主要是为了防止跨站请求伪造,并不是用来做这个的...防止携带你的授权信息cookie:sessionid进行攻击。
检查refer。
还有什么方法呢?
目前我打算用jwt生成token,每次,请求需要带上token(带上用户信息,进行权限控制等)。
感觉留坑了,sorry。也感谢gforce的回答。
回复内容: 之前我以为php curl模拟请求也会有跨域限制的。
疑问在之前设计接口的时候,需要权限访问的敏感数据(例如需要登录后查看的个人数据)。我是会做token检测的。
但是其他的普通接口可以直接获取的,只是添加了跨域头,防止跨域调用,但是后面发现,通过php curl是能调用成功的。后面看了eechen的回答。如下:
同源策略防止跨域是浏览器中的安全机制.而php的curl可以看做一个命令行下的浏览器(客户端),不受任何限制,就像你用file_get_contents下载互联网上的东西一样随心所欲, 来源。
感觉这样设计会不会有点不合理?js ajax有跨域限制,php curl这种形式的则没有跨域限制。为什么当时确定跨域限制的时候,为什么不把php curl形式的也作为跨域限制?
那这样的形式又应该如何去防止跨域调用呢?
解决方案之前想做网易云客户端的时候,有看过网易云音乐的接口,是通过csrf_token防止跨域调用的。
ps:话说这种方案,貌似能够通过爬网页获取csrf_token,再进行跨域调用吧?
另外,还有什么方案能够解决这个问题吗?
期待大家的解答,谢谢!============ 10-27 15:51 ==============
sorry,我理解错了...我以为是php curl做了什么特殊处理。谢谢南小鸟的回答,其实就是相当于直接访问指定url,自然不会产生跨域问题...
那如果希望我的接口不能被外界访问呢?
在内网这种应该就不需要设置什么了。
在外网设置csrf_token,但我查了一些csrf_token的资料,貌似csrf_token主要是为了防止跨站请求伪造,并不是用来做这个的...防止携带你的授权信息cookie:sessionid进行攻击。
检查refer。
还有什么方法呢?
目前我打算用jwt生成token,每次,请求需要带上token(带上用户信息,进行权限控制等)。
感觉留坑了,sorry。也感谢gforce的回答。
php curl 就相当于你浏览器直接打开一个网址,这样当然不算跨域了
可以作一个接口验证,比如利用 jwt
其它类似信息

推荐信息