2011-01-27 3 views
0

Я использую нагрузки() функция JQuery на моем сайте, передавая переменную, например, как пользователь, идентификатор, имя ...нагрузки() функция безопасности выдает

$('#DIV').load(page.php?id=' + id + '&user=' + user); 

Используя это на page.php, который загружено ..

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
    && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 
     { ...whatever...} else { ...the_other... } 

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

Могу ли я остановить это на случай?

ответ

0

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

Что определяет пользователь? Как вы аутентифицируете этих пользователей? Используете ли вы файлы cookie или сеансы? Где-то в вашем коде вам нужно убедиться, что запрашиваемая информация разрешена для доступа к аутентифицированному пользователю. В зависимости от того, как вы аутентификации пользователей, ваш код может в конечном итоге что-то вроде этого:

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
    && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 
     { ...whatever...} else { ...the_other... } 

Или еще лучше, зачем на самом деле отправки, которые используют это на сервер? Вместо того чтобы использовать переменные GET, то почему бы не пойти на следующий подход:

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
    && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 
     { //instead of getting user info with $_GET, get it with $_COOKIE or $_SESSION } 
+0

На странице.php У меня есть '$ id = $ _GET ['id']; $ user = $ _GET ['user']; ', Пробовал я, вы можете делать всевозможные вещи, когда пользователь нажимает кнопку« как »и т. д. обновляет базу данных ... Когда я изменяю информацию, #DIV перезагружается новым infomation – Alfie

+0

Cookies ВСЕГДА изменяемы. Если вы собираетесь использовать их, убедитесь, что это не просто текстовый текст «это значение, которое я сравниваю». Использование чего-то типа TamperData делает это значение * очень * очевидным. Вам лучше хранить SESSID для ссылки на фактическое место хранения. –

+0

На любой странице, где вы храните информацию о пользователях? Когда вы регистрируете пользователя, где вы храните свою аутентификацию? – Sam152

0

Вы будете нуждаться, чтобы сделать некоторые формы проверки на стороне сервера (возможно использовать куки сессии переменные, или оба). Что-то, что, когда сервер видит запрос, он может сказать «этот идентификатор пользователя совпадает», или «нет, это не так».

И как только вы это сделаете, аргумент пользователя будет спорным, поэтому вам не нужно беспокоиться об подделке, так как вы уже сможете подтвердить, что это они перед собой.

3

Необходимо проверить, что пользователь зарегистрирован на стороне сервера.

Пример: login.php

session_start(); 
$_SESSION['user'] = 'User ID goes here'; 

Везде, где вам нужно проверить, является ли пользователь, кто он говорит, что он

безопасный (МОГ) .php

session_start(); 
if($_SESSION['user'] == 'User ID goes here') 
{ 
    //code 
} 

См. PHP documentation для получения дополнительной информации о сеансах