2012-01-16 1 views
1

Я создаю веб-приложение, которое будет использовать много вызовов ajax. Приложение будет содержать личные данные пользователя. В Ajax вызовов переменные, используемые как Id, profile_id, message_id и т.д .. для завершения операции, как добавление сообщения в профили, получение соединений и т.д ..Какие данные следует шифровать для создания безопасного вызова ajax?

Я хочу, чтобы сделать звонки так безопасные, как Возможное. Я уже реализовал crsf в звонках $.post. Какие варибалы вызовов ajax должны/должны шифроваться, а какие нет?

Пример вызова Ajax (упрощенный):

function post_msg(profile_id, msg) { 
     var json_data = new Object(); 

     json_data.profile_id = profile_id; 
     json_data.msg = msg; 

     var data_str = JSON.stringify(json_data); 

     $.post("/ajax/get_posts", { data: data_str, csrf_key: "950egg22b771xxxxxxxxxxxxxxxx1a"}, func_that_does_something_with_ret_data); 
} 

//Some where else in the front-end 
$('#button').click(function() { 
    var msg = $('#input').value(); 

    post_msg(1, msg); //should I encrypt the id? 
}); 
+2

Невозможно защитить данные. Все, что вы пишете на JavaScript, можно легко изменить. –

+1

@RobW. В JS можно реализовать шифрование с открытым ключом, которое не было бы обратимым без закрытого ключа, но есть так много других векторов атаки, что было бы не очень полезно это сделать. – Quentin

+2

Вы подключаетесь к хосту через HTTP или HTTPS? Если вы используете HTTPS, тогда я не думаю, что вам нужна другая форма шифрования. HTTPS должен быть в порядке, как есть. Если вы используете только HTTP, то, возможно, сначала попробуйте переключиться на HTTPS? Это даст вам гораздо больше, чем любая другая форма пользовательского шифрования. – Zuljin

ответ

4

Не думайте о шифрования отдельных битов данных. Если важна безопасность, запустите всю транзакцию через HTTPS.

+0

Приложение будет в формате Https. Https - это одно безопасное соединение между клиентом и хостом, но «злой» пользователь все еще может изменить идентификатор вызова для извлечения или ввода данных в/из db, правильно? –

+0

@Sven - Вы сказали, что беспокоитесь о защите личных данных пользователя. Это их данные, поэтому вам не нужно защищать их от них. – Quentin

+3

@Sven - Если вы хотите, чтобы пользователи не обращались к другим данным пользователя, шифрование не является решением. Вам нужна авторизация + авторизация. Неважно, что они * запрашивают *, просто не давайте им данных, которые им не разрешено видеть. – Quentin

Смежные вопросы