api security implementation php

2022-08-30 14:09:18

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

我在我的网站上创建了一个版块:api.domain.com

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

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

例如:

场景 1:

用户创建一个php curl,通过post或curl身份验证发送用户并传递并返回结果,解析它等...

对我来说,这是安全的,但是如果用户更改了他们的通行证,则必须维护他的脚本。

方案 2

用户访问类似:的文件,然后访问数据api.domain.com/j355HGssgf3HESAjh45jusf4325GSj5hbsHhdh5HGHFS3732he4548475wbe3447nSNe5XfgjhGJ

这个,没什么可维护的


答案 1

以下是我对此的看法。

如果您在向您的页面发出请求时返回未找到的页面或错误消息(状态为200 OK),则可能会向机器人或不可信任的人发送有关他们可以获得什么的线索,并一次又一次地尝试...

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

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

现在,您是否愿意在检查邮件时简单地输入一个大字符串(如场景2)?或您的银行账户信息?


答案 2

如果是我,我会让每个帐户能够创建一个唯一的api密钥,

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

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

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


推荐