Использование Session-Variable для вызова данных с сервера MySQL - PullRequest
1 голос
/ 07 июля 2011

Я занимаюсь разработкой веб-системы отчетности php.Он включает в себя несколько страниц, которые вставляются и обновляются на сервере MySQL.По сути, я хочу, чтобы кто-то мог войти в систему, запустить отчет, а затем пройти довольно длительный процесс создания отчетов шаг за шагом.Прежде чем они просто заполняли таблицы Excel.Я в основном установил $ _SESSION [$ var] = (идентификатор автоматического приращения) таблицы оценок.

$returnQuery = "Select AssessmentID FROM opsassessment.assessmentscores WHERE Date    =    '$Date' AND InspectorID = '$inspectorResult2[0]'
                            AND PlantAssistID = '$assistResult2[0]' AND Plant = '$plantResult2[0]'";

                $return = mysql_query ($returnQuery);
                $return2 = mysql_fetch_row($return);

                $_SESSION["return2"] = $return2[0];
                echo "The ID for this session is: " . $_SESSION["return2"];

Затем я назначаю переменную сеанса переменной на каждой странице.Затем используйте эту переменную, чтобы обновить таблицу оценок с данными из нескольких флажков.У меня есть два вопроса по этому поводу:

  1. Есть ли "лучший" способ сделать это?смутно я знаю.Несмотря на то, что система работает, у меня есть подозрение, что существует более простой или более традиционный способ сделать это.

  2. Какую угрозу безопасности я испытываю, используя сеанс использования?Примечание: это закрытая сеть, поэтому никто за пределами компании не сможет получить доступ к веб-страницам, если сеть уже не взломана.Кроме того, я реализовал предотвращение внедрения SQL-кода, например удаление HTML и специальных символов.

Будем благодарны за любые комментарии и / или отзывы.

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Данные сеанса так же безопасны, как и ваш сервер. Все данные IN , хранящиеся в сеансе, физически не передаются пользователю, если только вы не решили это сделать.

Единственными данными, относящимися к сеансу, которые каждый (или СЛЕДУЕТ) передавать пользователю, является идентификатор сеанса.

Однако сохранение идентификационного номера в сеансе может быть проблематичным. Рассмотрим случай, когда пользователь запускает два отчета примерно в одно и то же время. Какой бы отчет не был запущен последним, будет перезаписан идентификационный номер первого отчета, и теперь все операции в обоих окнах влияют на отчет № 2.

0 голосов
/ 07 июля 2011

Сессии должны были делать ТОЧНО то, что вы делаете.

И они более безопасны, чем другие варианты, поскольку их хранилище находится на стороне сервера (в отличие от хранилища cookie), поэтому единственный способ получить доступ к сеансам - это иметь доступ к каталогу сеансов веб-сервера иесли это произойдет, у вас есть большие проблемы, чтобы беспокоиться.

Возможно украсть сеанс, но злоумышленнику потребуется файл cookie сеанса пользователя.

Но продолжайте делать то же, что и вы, сохраните основной идентификатор строки, чтобы предотвратить дополнительные запросы, этокак это должно быть сделано (я бы использовал переменную $ _SESSION напрямую, а не копировал ее в другую переменную)

Подробнее о безопасности сеансов на SO:

PHP Session Security

Безопасность массива $ _SESSION

...