Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Безопасно передать данные из javascript в PHP


Автор: quiz 21.4.2007, 05:51
Здравствуйте.
Озадачился на днях таким вопросом - реально ли передать результат выполнения javascript'а серверу так, чтобы его при этом нельзя было подменить (хотя бы самыми простыми методами).
То есть, например, имеется яваскрипт, который считает сколько раз пользователь успел нажать на кнопку в течение 3х секунд, а в конце "теста" скрипт передает серверу результат в виде result.php?num=123

Можно ли защититься от прямой передачи результата юзером вручную, типа result.php?num=9999?

Автор: Sardar 21.4.2007, 12:05
Если через SSL (https) отправлять, то добрую половину чайников это точно остановит. Можно только усложнить процесс передачи данных, но защитится от "подмены" нельзя.

Автор: Alx 21.4.2007, 15:44
а если использовать POST-метод и HTTP_REFERER?

Автор: Alexandr87 21.4.2007, 18:56
Цитата(Sardar @  21.4.2007,  15:05 Найти цитируемый пост)
Если через SSL (https) отправлять, то добрую половину чайников это точно остановит. Можно только усложнить процесс передачи данных, но защитится от "подмены" нельзя. 

Не все так плохо, на самом деле при передачи данных по протоколу SSL обеспечивается их имитозащита (Выработка MAC`ов). Так, что факт подмены|искажения данных будет установлен.

PS. Кроме того, часто используются связки JavaScript`ов с JavaApplet`ами, при этом апплеты выполняют функции по шифрованию, выработке ЭЦП.

Автор: quiz 22.4.2007, 19:54
Извиняюсь, наверное надо было постить тему в раздел "для новичков".
Покажите примеры, пожалуйста, как отправить по SSL и проверить факт подмены в php скрипте, smile 

Автор: Sardar 22.4.2007, 22:44
На до что бы хостер поддерживал SSL. Всё то же самое, только в урлах https (http через SSL тунель). Если денег не жалко, то можно положить свой сертификат у какой нибудь trusted фирмы, например http://www.verisign.com/. Тогда бродилка не будет пользователя просит подтвердить доверие к сертификату. Собственно задача такой фирмы сказать что ты это точно ты.

Если интересно как всё устроено, то читать о асимметричном кодировании.

Автор: Alx 23.4.2007, 17:38
я читал) в Wikipedia статью SSL. ниче не понял smile хотя вроде там все так разжевано..
точнее - что такое сертификат и как им пользоваться..

судя по твоему посту он необязателен?
и все что нужно для SSL соединения - писать https:// вместо http://, если это включено на хостинге?

Автор: Alexandr87 23.4.2007, 20:10
Цитата(Alx @  23.4.2007,  20:38 Найти цитируемый пост)
что такое сертификат

Сертификат - это файл, который удостоверяет, что определенный открытый ключ принадлежит определенному человеку или организации. Не вдаваясь в подробности, это просто открытый ключ и данные о владельце, подписанные другим - "доверенным" лицом.



Цитата(Alx @  23.4.2007,  20:38 Найти цитируемый пост)
судя по твоему посту он необязателен?

Есть два режима, в одном сертификат имеет только сервер - т.е. клиент обращающийся к серверу - будет уверен, что сервер именно тот, который нужен. При этом, клиент для сервера остается не авторизованным.
Во втором режиме, клиент также имеет сертификат - и в этом случае сервер также уверен с кем он "общается". 

Чаще всего на интернет страницах используется первый вариант, который позволяет любому пользователю сети передавать какие-либо конфиденциальные данные по организованному защищенному каналу. Соответственно, и в данном случае насчет сертификатов заморачиваться не надо. Надо всего лишь прикрутить SSL  к вашему web-серверу (при это надо будет сгенерировать ключики, создать сертификаты, по этой теме есть довольно много манов, проблем быть не должно).

Цитата(quiz @  22.4.2007,  22:54 Найти цитируемый пост)
проверить факт подмены в php скрипте

Об этом вам задумываться не стоит, за вас это сделает сервер, для вашего php-скрипта, впрочем, как и для java-скрипта - работа через SSL будет "прозрачна".

Автор: Sardar 23.4.2007, 20:26
Цитата(Alexandr87 @  23.4.2007,  19:10 Найти цитируемый пост)
Соответственно, и в данном случае насчет сертификатов заморачиваться не надо.

Бродилка будет требовать подтверждения сертификата с сервера если за него никто trusted не отпишется, а это стоит денег. Но оно не страшно, средний пользователь без страха жмёт "да" на любые окна smile

Цитата(Alx @  23.4.2007,  16:38 Найти цитируемый пост)
и все что нужно для SSL соединения - писать https:// вместо http://, если это включено на хостинге? 

С клиентской стороны да. Бродилка просто будет SSL тунель открывать перед запросом. Для серверных скриптов вообще ничего на прямую не заметно. Также бродилка в таком режиме будет отсылать куки с флагом secure, которые без защищённого канала не отсылаются. Удобно для разного рода ключей сессий.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)