【问题标题】:What is the best way to securely process authentication checks Cross domain using REST/JSON/PHP/AJAX使用 REST/JSON/PHP/AJAX 跨域安全处理身份验证检查的最佳方法是什么
【发布时间】:2012-02-03 01:06:54
【问题描述】:

我正在使用 PHP/CodeIgniter 和 Tank_Auth 库在 site.com 上和通过 API 进行身份验证,以及来自 Phil Sturgeon 的一个非常基本的 REST API。

现在,当用户在 Site1 上填写用户名/密码时。它会像这样进行 API 调用:

http://site2.com/api/index/authenticate?username=jdoe&password=123456

在 Site2.com 上: index/authenticate 使用 tank_auth 库将用户名/密码与数据库中存储的内容进行比较。

我的问题: 是否有标准在提交过程中加密密码,然后在另一端解密?还是 SSL 证书就足够了?

【问题讨论】:

    标签: php jquery codeigniter authentication rest


    【解决方案1】:

    如何使用一些“盐”创建 2 的哈希,将其传递到查询字符串中,然后通过在第二台服务器上运行相同的哈希来确保它匹配。

    http://site2.com/api/index/authenticate?username=jdoe&password=123456&cs=fds34wsef3ewtdfgw54ty43wg    
    

    确保你对盐保密......不太确定在 GET 中传递它,尤其是密码 - 也许你可以传递一个单独的 id 哈希而不是密码。绝对使用 POST,最好是 SSL。您可以混淆的越多,加密就越安全

    【讨论】:

    • 我不认为 POST 更安全。这是一个化妆品方面
    • 嗯,我不会把这个放在 GET 中,如果他说谷歌分析正在运行呢?不太可能,但有可能。
    • 我同意 POST 不会更安全,但它会更加混淆它。我认为 SSL/salted user/pass hash 会很好。我在网上找到的所有内容都差不多。API 调用是通过 AJAX 处理的,因此用户永远不会看到有问题的形成 URL,除非他们正在监视 XHR 请求
    • 我提倡 POST 优于 GET 的原因是 GET 可能会存储在您的流量通过的每个服务器/路由器日志中,而 POST 则较少
    • 确实如此,但使用 POST 并不真正符合 REST 标准。因为您正在接收数据而不是提交数据。但在这种情况下,我认为这是值得的。
    猜你喜欢
    • 1970-01-01
    • 2017-03-13
    • 2015-06-24
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2016-05-27
    • 2012-02-25
    • 2018-06-23
    相关资源
    最近更新 更多