在两个不同的页面中加密和解密json

时间:2014-02-20 15:00:42

标签: php jquery

情况:如何在页面getuser.php中加密json,然后在index.php中对其进行解密?

我有一个getuser.php,用示例输出创建echo (json_encode($data));

{
    "id": 2,
    "username": "Teeto",
    "surname": "",
    "password": "somepassword",
    "lastlogin": "2014-02-18 15:35:01",
    "level": 0
}

然后我将数据发送到jquery

$.ajax({ 
            type: 'POST', 
            url: "getuserdata.php?id="+ otherPro,
            datatype: 'json',
            success: function(data){ 

            $.each(data, function (key, value) {
                $( '#' + key ).val( value ); 
            });

            } 
        }); 

感谢您的任何提示。

3 个答案:

答案 0 :(得分:5)

绝对没有理由允许管理员访问以查看当前密码。最多应该允许管理员更改它们(不需要查看它们。)只需从json中删除密码字段并继续。一旦从中删除密码,就不需要简单地使用ssl来加密json了(因为你在javascript中进行的任何加密/解密都可以很容易地进行逆向工程。)

答案 1 :(得分:1)

使用getJSON通过发送GET请求加载JSON数据,并使用$.each遍历列表:

$(document).ready(function() {
    $.getJSON('file.json', function(result) {
        $.each(result, function(i, field){
          $("#results").append(i + '=>' + field + '<br/ >');
        });
    });
});

但正如评论中所述, 真的 不应以明文形式存储/发送密码。

答案 2 :(得分:1)

简短而甜蜜的答案是您必须忘记使用JavaScript加密或解密。从开发的角度来看,它需要额外的时间,并且不能保护您的数据。您的JavaScript代码可以由第三方修改和操作。

正如Kevin建议的那样,在这种情况下,您唯一的解决方案是使用SSL ,它会在您的数据从一个页面传递到另一个页面时对其进行加密。这不是一个panecea,因为它有自己的关注点。 [0]但是,如果您有兴趣保护用户的密码免受攻击者和窃听者的侵害,则SSL是必须执行的步骤。

几周前,我问了一个关于在JavaScript中使用加密的类似问题。 [1]我想使用 Stanford的JS Crypto Library 来处理小比特数据的加密。虽然斯坦福大学的图书馆在加密方面很强大,但我不得不排除它,因为攻击者可以修改它的实现。这是我收到的一个有用的答案:

  

Javascript从服务器发送到客户端;随你   你做客户端的密码学只会提供安全性   客户端运行的代码在传输过程中未被更改 -   这意味着仍然需要SSL,至少要确保这一点   客户端接收和运行的是真正的实现   您的协议。 [2]

编辑:这与您的担忧没有直接关系,但如果您通常对使用JavaScript进行加密或解密感兴趣,则可以考虑通过其他方式提供代码。如果您创建 Google Chrome插件 [3]来处理这些流程,您将更加确定代码未被修改。开发加密协议总是存在很大的风险,我不会对涉及敏感信息的任何应用程序执行此操作,但我认为插件方法很有意思。 [4]