Зашифровать и расшифровать JSON на двух разных страницах

0

Ситуация: как я могу зашифровать json на странице getuser.php, а затем расшифровать его в 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 ); 
            });

            } 
        }); 

Спасибо за любые советы.

  • 1
    Какова цель, вы не можете использовать ssl?
  • 0
    В index.php декодируйте переменную с помощью json с помощью $data = json_decode($jsonstring, true);
Показать ещё 6 комментариев
Теги:

3 ответа

5
Лучший ответ

Нет абсолютно никаких оснований позволять даже доступу администратора видеть текущие пароли. В большинстве случаев администратору должно быть разрешено изменять их (что не требует их просмотра). Просто удалите поле пароля из своего json и продолжите свой путь. Вам не нужно шифровать json больше, чем просто использовать ssl, как только вы удалите из него пароль (поскольку любое шифрование/дешифрование, которое вы делаете в javascript, может быть легко реконструировано.)

1

Короткий и сладкий ответ заключается в том, что вы должны забыть об использовании шифрования или расшифровки с помощью JavaScript. Это занимает дополнительное время с точки зрения разработки, и оно не защищает ваши данные. Ваш код JavaScript может быть изменен и обработан третьими лицами.

Как предложил Кевин, единственным решением в этом случае является использование SSL, который шифрует ваши данные при прохождении через сеть с одной страницы на другую. Это не панечеа, потому что у него есть свои проблемы. [0] Однако SSL является обязательным шагом, если вы заинтересованы в защите паролей пользователей от злоумышленников и подслушивающих устройств.

Несколько недель назад я задал аналогичный вопрос об использовании шифрования в JavaScript. [1] Я хотел использовать Stanford JS Crypto Library для обработки шифрования небольших битов данных. Хотя библиотека Стэнфорда криптографически сильна, я должен был это исключить, потому что злоумышленники могут возиться с ее реализацией. Вот один полезный ответ, который я получил:

Javascript отправляется с сервера клиенту; любая криптография, которую вы выполняете на стороне клиента, обеспечит безопасность только в том случае, если код, который запускает клиент, не был изменен при переходе - это означает, что SSL по-прежнему требуется, по крайней мере, чтобы убедиться, что то, что клиент получает и работает на самом деле, является подлинная реализация вашего протокола. [2]

EDIT: Это напрямую не связано с вашей проблемой, но если вы, как правило, заинтересованы в использовании JavaScript для шифрования или дешифрования, вы можете рассмотреть возможность доставки кода с помощью других средств. Если вы создадите плагин Google Chrome [3] для обработки этих процессов, у вас будет большая уверенность в том, что код не был изменен. Всегда существует значительный риск для разработки вашего протокола шифрования, и я бы не сделал этого для любого приложения, которое связано с конфиденциальной информацией, но я думаю, что подход плагинов интересен. [4]

1

Используйте getJSON для загрузки данных JSON, отправив запрос GET и перечислив список с помощью $.each:

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

Но, как сказано в комментариях, вы действительно не должны хранить/отправлять пароли в текстовом виде.

  • 0
    Я использую его только для административных целей. Но все равно нужно как-то его защитить, чтобы не искать простой пароль, если кто-то выяснит файл json (что легко сделать)
  • 2
    @ user3002600: Неважно, для какой цели вы его используете, хранение паролей в виде открытого текста - это просто плохая идея ™ .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню