如果标题相对于内容来说是愚蠢的,请原谅。
我们正在讨论一个模型,用于一个交互密集的网站,其中将有
site.com
api.site.com
在同一台服务器上。 site.com 由 PHP 提供支持,而 api.site.com 将由替代 Web 框架提供支持。相同或不同的服务器响应这两个域。
呈现的网站对 api.site.com 进行 AJAX 调用。
如果应用程序是“全 PHP”,则保护它很容易。 session 功能可以阻止允许以下行为的 HTTP 请求:
- 未登录的陌生人访问用户数据
- 合法登录的用户请求其他用户的数据
问题 1:您如何保护内部 API,以便我们可以确定每个请求的合法性?
我用谷歌搜索了 AJAX 和同源策略,但我并没有深入了解它们。
我在考虑随机生成的“ token ”,这两个域都会承认。
问题 2:这个模型有具体的名称吗?
最佳答案
您应该看看 JSONP。 jQuery 有一个很好的例子:http://api.jquery.com/jQuery.getJSON/
需要添加jsoncallback=?到 URL 以使其工作。
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?"
有了这个,你可以避免 Same origin Policy
jsoncallback 将是一个时间戳,它应该由输出 JSON 的 PHP 脚本回显
,如下所示:
jsonp1277656587731(/* rest of the JSON here */);
这里的数字当然是随机生成的字符串,或者在 jQuery JSONP 的情况下是时间戳
关于php - 如何保护站点和内部 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8890531/