2016-05-25 2 views
0

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

Мое беспокойство в том, что если кто-то изменяет переменную $_GET в URL-адресе? Как работает php с переменными $_GET? Определены ли они, когда страница запущена или пользователь может изменить эту переменную на странице и изменить содержимое другой страницы?

Любая помощь по этому вопросу будет замечательной. В настоящее время, как я устанавливаю его, он не должен быть слишком большим для работы, но я просто хочу убедиться, что я не буду сталкиваться с серьезными проблемами безопасности. Спасибо.

+0

Любой пользователь может изменить * любой * значение отправляется на сервер, GET или иным образом. Перед его выполнением всегда проверяйте и авторизуйте серверную операцию. – David

+0

Так же, как я думаю об этом. Подтвердите, что эта фактическая страница была загружена пользователем, иначе перенаправление без каких-либо действий. – Coilerz

+1

Вам необходимо проверить входы, злонамеренные пользователи могут редактировать/удалять ваши сообщения, если нет безопасности. – Jer

ответ

1

Просто проверьте, не массив ли GET установить и равное к чему-то, в частности, или уже в массиве

Ie:.

if(isset($_GET['var']) && $_GET['var'] == 'xyz') 

в примере массива:

<?php 
$array= array ('abc','def','ghi'); 
if (isset($_GET['var'])){ 
    if (in_array($_GET['var'], $array)) { 
     echo "Do something"; 
    } 
    else { 
     echo "Do something else"; 
    } 
} 
?> 

<a href="file.php?var=abc">Click</a> Allowed 

Если кто-то пытается изменить его file.php?var=abcd он перейдет к «Сделать что-то еще», так как он не является частью массива.

Ссылки:

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