2015-06-29 2 views
2

просто хотел найти самый безопасный способ сделать что-то, чтобы он не был уязвим. Скажем, у меня есть URL-адрес, например www.mysite.com?name=nickвведите url param в html-форму

Это загружает статическую html-страницу с формой. Одно из полей формы:

<input type="text" id="pName" value="" name="pName" readonly> 

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

Любая информация ценится,

UPDATE

Уходя комментарии, я добавил это в верхней части index.php

<?php 
session_start(); 
if (!isset($_SESSION['pName'])) { 
    $_SESSION['pName'] = $_GET['pName']; 
} 
?> 

И тогда вход как так

<input type="text" id="pName" value="<?php $_SESSION['pName'] ?>" name="pName" readonly> 

Будет ли это приемлемо?

+0

сеанс - ваш друг – donald123

+0

ответ

1

Используйте сеанс и положите $_SESSION['YourSessionVariable'] в текстовое поле.

<?php 
$valueForTextbox = ''; 
if(isset($_POST['yourSubmitName'])){ 
    $_SESSION['pName'] = $valueForTextbox = $_POST['pName']; 

}else if(isset($_SESSION['pName'])){ 
    $valueForTextbox = $_SESSION['pName']; 
} 
?> 



<input type="text" id="pName" value="<?php echo $valueForTextbox;?>" name="pName" readonly> 

Почему?

Что делать, если я изменяю параметр GET URL? Это также будет проблема безопасности.

Также, если мне нужно сохранить эти данные на многих страницах (скажем, мастер для завершения) И если я удалю некоторые параметры из URL-адреса, это создаст проблему.

Строка запроса будет излишне большой с параметрами GET, которые можно легко сохранить в сеансах.

Редактировать: Когда форма не отправлена. Извлечь значение из базы данных, а не из строки запроса. И после отправки формы отправить значение в СЕССИИ. Ведение журнала будет продолжать обновлять значение для этой переменной сеанса.

+0

Я обновил исходное сообщение, это выглядит правильно? Спасибо –

+0

@NickPrice, вы публикуете его в параметрах URL $ _GET, но что, если я изменяю строку запроса ?? Проблема сохраняется с безопасностью. Используйте метод 'POST' формы, который лучше, чем' GET'. –

+0

Если вы это сделаете, значение можно изменить, изменив его с помощью инструментов разработчика. Лучше получить сессию при ее хранении в базе данных. Это полностью исключает необходимость ввода имени для имени и параметра имени в URL-адресе – SuperDJ

1

Если пользователь должен быть определен в URL-адресе, вы должны проверить его на сервере, если пользователь авторизован.

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

При входе в систему вы сохраняете имя пользователя на сервере, как правило, в сеансе, затем пересылаете его в форму.

Если пользователь пытается вызвать форму для другого, не идентифицированного пользователя, вы поймете это на сервере. Форма возвращается, но пользователь не соответствует имени пользователя, хранящемуся в сеансе.

Теперь, поскольку у вас уже есть пользователь в сеансе, возникает вопрос, если вам действительно нужен пользователь в URL-адресе. Причинами этого могут быть то, что вы хотите открыть несколько форм одновременно или у вас есть авторизованный доступ к форме других пользователей (например, доступ администратора).

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