Массив сессий во вставленном PHP / JS - PullRequest
0 голосов
/ 17 февраля 2011

Может ли кто-нибудь объяснить мне, как лучше (или, если это вообще возможно) получить доступ к данным сеанса в файле php / js, который вводится в DOM?

Наглядный пример, чтобы быть более понятным:

index.php:

<?php
     session_start();
     $_SESSION['logged_in'] = true;
?>

<script type="text/javascript" src="http://www.domain.com/include.php"></script>

include.php:

<?php

session_start();
$logged_in =  $_SESSION['logged_in'];

?>

alert("<?php echo $logged_in; ?>");

Сценарий include.php - это тот, который, в идеале, любой клиент может поместить в свой заголовок, но это не обязательно имеет значение. У меня есть возможность передавать параметры в URL-адресе скрипта (например, http://www.domain.com/include.php?s=213409239323939), поэтому я подумал о такой передаче идентификатора сеанса, но не уверен, существуют ли присущие ему риски безопасности при раскрытии идентификатора сеанса. Любые советы или мысли приветствуются.

** РЕДАКТИРОВАТЬ - я должен уточнить, что файл сценария (include.php) - это другое доменное имя

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Вы всегда выставляете идентификатор сессии некоторым способом - либо в файле cookie, либо в параметре GET. Перенос идентификатора сеанса сам по себе не является угрозой безопасности. (Редактировать: это относится к ссылкам в одном домене. Распространение сеансов между серверами - это другая проблема, хорошо изложенная, например, здесь ).

Однако, если это вообще возможно, рассмотрите возможность использования всех динамических битов вашего сценария в самом документе:

<script>
MyDynamicData =
 { xyz:  "<?php echo $_SESSION["xyz"]; ?>",
   abc:  "<?php echo $_SESSION["abc"]; ?>"
 }
</script>

<script src="external_script.js"></script>

, который позволил бы вам иметь внешний JavaScript в качестве статического ресурса, что хорошо, потому что

  • Он легко кэшируется, поскольку не имеет динамических битов
  • Может быть сжат веб-сервером
  • Для обслуживания не требуется отдельный процесс PHP.
0 голосов
/ 17 февраля 2011

Может быть, я ошибаюсь, но разве невозможно увидеть ваш идентификатор сессии и данные cookie в Firefox?Если это не я вижу угрозы безопасности, чтобы сделать его видимым в URL

0 голосов
/ 17 февраля 2011

Вы имеете в виду, как это?

<script>
  var is_logged = <? echo $_SESSION['logged'] ? "true" : "false"; ?>;
</script> 
<!--other stuff and html here-->
<script>
if(is_logged){
 //do stuff
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...