php - 如何保护站点和内部 API?

标签 php ajax security apache same-origin-policy

如果标题相对于内容来说是愚蠢的,请原谅。

我们正在讨论一个模型,用于一个交互密集的网站,其中将有

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/

相关文章:

敏感数据的 MySQL 数据库安全性

security - 如何防止重放攻击

wcf - 使用SSL时私钥存储在哪里?

php - SSL Step Wise 初学者实现指南

javascript - AJAX 调用中来自 php 的 JSON 响应

javascript - Node.js AJAX 删除 403 禁止

javascript - 将对象内的列表发送到 Wcf 服务

php - 带有对象数组的 Symfony 2 对象,如何访问它们?

php - 如何从数据库中获取逗号分隔值

javascript - 当调用设定的间隔函数时触发倒计时