如题,本人在学校有一套 API 数据接口服务( python - tornado 写的),提供学校内好多功能,比如成绩查询/考试安排/图书馆借阅/校园网等等等等功能。
最初设计没加防护,只要学校的 app 开发人员知道我的接口地址再看看文档,带着正确的查询信息,就能获取到返回信息。
但是随着接口使用者越来越多,访问越来越杂,况且现在接口还提供了学生个人学籍信息的查询(学号+弱口令试一试,建立全校 2/3 学生的个人信息社工库绝对没问题),必须要 api-key 保护了(只限定允许的开发者可以用 api )
目前我只想出了一种还算高效的解决方案,类似百度 API-Store 那种的,申请了以后给一个 固定的 string 作为 key ,请求 api 的时候加在参数里就可以。
接口速度是关键,目前每日请求量大概在 5w 次左右,服务器用的 RQ940 放在服务器机房,我的上述方案,只要把我授权出去 api - key - string 写 API 在接口服务的配置文件里就可以了(暂时还不计数,以后可能要放进数据库),这样效率很高,毫不增加多余的响应时间,也算是 api 的一堵墙了吧。
但是,写固定的 key 也有个弊端,好像它的防护并不是绝对安全的,只要有某些开发人员不小心泄漏了自己 app 使用的 key 或者软件被反搞,让这 key 暴露出去,那还是不能保证 api 不被乱用。
请大家说说有没有什么更好的解决方案,既可以保证高效,又能比我说的那方案更安全的办法呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.