api安全实现php

时间:2011-12-03 03:25:12

标签: php security api

我有一个网站,允许用户检查他们的统计数据(上传的文件数量,他们有多少文件,配额,访问类型等...)

我在自己的网站上创建了一个部分:api.domain.com

这可以通过curl或Web浏览器访问,因为我返回一个json对象或xml(取决于用户prefs)

我的问题是:我应该使用user / pass限制访问,还是应该创建用户文件的哈希?

例如:

方案1:

用户创建一个发送用户的php curl并通过post或curl auth传递并获取结果,解析它等...

对我而言,这是安全的,但如果用户更改了传递,用户必须维护他的脚本

方案2

用户访问如下文件:api.domain.com/j355HGssgf3HESAjh45jusf4325GSj5hbsHhdh5HGHFS3732he4548475wbe3447nSNe5XfgjhGJ,然后访问数据

这一个,无需维护

2 个答案:

答案 0 :(得分:40)

以下是我对此的看法。

如果您在向页面发出请求时返回未找到的页面或错误消息(具有良好的200 OK状态),它可能会向机器人或可信任的人发送有关他们可以获取的内容的线索并尝试一次又一次......

另一方面,如果您发送拒绝访问,如401或更好的500错误代码来模拟服务器错误,这些机器人或可信任的人可能会永远消失。

我会说在这种情况下用户/密码方法更安全一些。

现在,您是否相信在检查邮件时只需输入一个大字符串(如方案2)?或您的银行帐户信息?

答案 1 :(得分:37)

如果是我,我会给每个帐户创建一个独特的api密钥,

api.domain.com/?key=<API.KEY>

要获得更多安全措施,您可以通过post方法使用api密钥接受连接。如果通过get联系,则显示错误等。

然后,如果他们更改了通行证/用户名,则不会影响他们的api密钥