有关API的Web安全问题

时间:2010-11-29 01:19:08

标签: api security session-cookies

我正在构建一个没有服务器端身份验证的API。将为会话生成唯一密钥(假设密钥很长且无法猜测),但不会在客户端上设置cookie。客户端可以是具有AJAX的Web浏览器,使用CURL的PHP​​脚本或桌面应用程序。我想象的正常交易过程将是:

初次遭遇

  1. 客户端发出初始请求,调用start_session方法
  2. 服务器生成密钥并将其与一些初始数据一起返回
  3. 客户端存储密钥供以后使用(例如JavaScript使用密钥设置cookie)
  4. 下一个请求

    1. 客户端再次请求服务器,调用一些set_data方法,提供原始会话密钥,以及大量私人数据,如信用卡号,有关法律案件的信息等。
    2. 服务器响应,并以成功消息响应
    3. 另一个请求

      1. 客户端再次请求服务器,提供原始会话密钥,并调用一些get_data方法
      2. 服务器以某种格式(例如XML,JSON等)响应所有私有数据
      3. 会话密钥在20分钟内过期(如果不使用),所有API URI都需要SSL

        我的担忧/问题是:我是否需要担心客户端是否泄露了会话密钥。没有身份验证,我相信原始请求者将会话密钥保密。这是常见/安全的做法吗?

1 个答案:

答案 0 :(得分:1)

除非您始终使用HTTPS,否则您很容易受到HTTP嗅探, a la Firesheep。

Eve,如果您使用SSL,如果客户端页面不是SSL或包含任何非SSL Javascript(或同一域中的非SSL帧),您仍然容易受到攻击(并且您无能为力关于它)

要回答您提出的问题,这完全取决于您的情况 编辑:您应该在文档页面中警告您的客户(开发人员)正确处理密钥。
除此之外,它取决于客户的平均技能水平 您可能应该有某种免责声明(我不是律师)。

可能没事。