Ситуация: как я могу зашифровать 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 );
});
}
});
Спасибо за любые советы.
Нет абсолютно никаких оснований позволять даже доступу администратора видеть текущие пароли. В большинстве случаев администратору должно быть разрешено изменять их (что не требует их просмотра). Просто удалите поле пароля из своего json и продолжите свой путь. Вам не нужно шифровать json больше, чем просто использовать ssl, как только вы удалите из него пароль (поскольку любое шифрование/дешифрование, которое вы делаете в javascript, может быть легко реконструировано.)
Короткий и сладкий ответ заключается в том, что вы должны забыть об использовании шифрования или расшифровки с помощью JavaScript. Это занимает дополнительное время с точки зрения разработки, и оно не защищает ваши данные. Ваш код JavaScript может быть изменен и обработан третьими лицами.
Как предложил Кевин, единственным решением в этом случае является использование SSL, который шифрует ваши данные при прохождении через сеть с одной страницы на другую. Это не панечеа, потому что у него есть свои проблемы. [0] Однако SSL является обязательным шагом, если вы заинтересованы в защите паролей пользователей от злоумышленников и подслушивающих устройств.
Несколько недель назад я задал аналогичный вопрос об использовании шифрования в JavaScript. [1] Я хотел использовать Stanford JS Crypto Library для обработки шифрования небольших битов данных. Хотя библиотека Стэнфорда криптографически сильна, я должен был это исключить, потому что злоумышленники могут возиться с ее реализацией. Вот один полезный ответ, который я получил:
Javascript отправляется с сервера клиенту; любая криптография, которую вы выполняете на стороне клиента, обеспечит безопасность только в том случае, если код, который запускает клиент, не был изменен при переходе - это означает, что SSL по-прежнему требуется, по крайней мере, чтобы убедиться, что то, что клиент получает и работает на самом деле, является подлинная реализация вашего протокола. [2]
EDIT: Это напрямую не связано с вашей проблемой, но если вы, как правило, заинтересованы в использовании JavaScript для шифрования или дешифрования, вы можете рассмотреть возможность доставки кода с помощью других средств. Если вы создадите плагин Google Chrome [3] для обработки этих процессов, у вас будет большая уверенность в том, что код не был изменен. Всегда существует значительный риск для разработки вашего протокола шифрования, и я бы не сделал этого для любого приложения, которое связано с конфиденциальной информацией, но я думаю, что подход плагинов интересен. [4]
Используйте getJSON
для загрузки данных JSON, отправив запрос GET
и перечислив список с помощью $.each
:
$(document).ready(function() {
$.getJSON('file.json', function(result) {
$.each(result, function(i, field){
$("#results").append(i + '=>' + field + '<br/ >');
});
});
});
Но, как сказано в комментариях, вы действительно не должны хранить/отправлять пароли в текстовом виде.
$data = json_decode($jsonstring, true);