java面试_前端相关

2.如何防止对外API接口被恶意调用

1. 加密内容。用一个密钥和所有的参数签名成一个 sign,请求时候加上这个 sign。
	这样不知道密钥,即使看到了所有的参数也无法访问别人的。
2 oauth 
3.采用https:
	线上的api接口开启https访问,这样做的话别人抓包的难度会提高很多,
	而且https需要秘钥交换,可以在一定程度上鉴别是否伪造IP。
4.服务器端代理请求:
针对于网站,这也是解决跨域的方案之一,采用服务器代理可以有效的防止接口真实地址的暴露。
5.IP黑白名单
6.限定请求次数
7. 归属地,检测IP所在地是否与手机号归属地匹配;IP所在地是否是为常在地
8. 签名,API接口启用签名策略,签名可以保障请求URL的完整安全,签名匹配再继续下一步操作

1.有没有遇到跨域问题,如何解决的

广义定义:跨域是指一个域下的文档或脚本试图去请求另一个域下的资源
狭义定义:由浏览器同源策略(Same origin policy)限制的一类请求场景
它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。

浏览器的同源策略造成的,  域名 协议 端口 有一个不同就跨域
跨域阻止的操作 阻止接口的请求  阻止dom获取和操作
同源策略限制以下几种行为:
1.) Cookie、LocalStorage 和 IndexDB 无法读取
2.) DOM 和 Js对象无法获得
3.) AJAX 请求不能发送

广义的跨域:
1.) 资源跳转: A链接、重定向、表单提交
2.) 资源嵌入: <link>、<script>、<img>、<frame>等dom标签,
		还有样式中background:url()、@font-face()等文件外链
3.) 脚本请求: js发起的ajax请求、dom和js对象的跨域操作等


跨域解决方案
1、 通过jsonp跨域                                          1111111111111
2、 document.domain + iframe跨域
3、 location.hash + iframe
4、 window.name + iframe跨域
5、 postMessage跨域
6、 跨域资源共享Cross Origin Resource Share(CORS)          11111111111111
7、 nginx代理跨域
8、 nodejs中间件代理跨域
9、 WebSocket协议跨域

只有GET请求	            JSONP
对兼容性及浏览器版本无要求	CORS
对兼容性及浏览器版本有要求	iframe 或 服务器反向代理(linux 环境下开发)

发布了279 篇原创文章 · 获赞 113 · 访问量 78万+

猜你喜欢

转载自blog.csdn.net/icecoola_/article/details/104965551