Я использую это руководство JQuery Ajax Voting в качестве приблизительной справки, но я немного обеспокоен безопасностью этого. Сейчас это руководство в основном хранит идентификатор чего-то и статистику голосования для него.
Я хотел бы пойти с подобной идеей, но мне нужно включить идентификатор пользователя, чтобы пользователь мог только проголосовать один раз. Это хранится в переменной сеанса PHP, и мне было интересно, будет ли доступ к этой странице, если вызываемая страница ajax будет иметь доступ к этому сеансу. Если нет, то какой безопасный способ пройти в параметре, чтобы он не мог быть захвачен человеком в средней атаке или подделкой.
Сервер будет иметь доступ к данным сеанса через вызов AJAX, пока вы выполняете session_start();
в верхней части вашего скрипта. Вы также должны убедиться, что вы дезинфицируете свои данные, поскольку я вижу, что учебник выполняет запросы, не передавая данные через mysql_real_escape_string
. Вы также должны сделать UNIQUE KEY(user_id, id)
в таблице голосов, чтобы убедиться, что нет обманов.
Вы должны иметь возможность вытащить одну и ту же переменную сеанса из обработчика, который фактически хранит голосование пользователя.
В качестве базовой меры безопасности вы можете включить UserId на странице с голосованием перед вызовом AJAX и дешифровать UserId при выполнении вставки, если он недоступен в сеансе.