注入PHP / JS中的会话数组

时间:2011-02-17 16:10:22

标签: php javascript session

有人可以告诉我最好的方式(或者,如果可能的话)访问注入DOM的php / js文件中的会话数据吗?

说明性示例,更清楚:

的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),所以我考虑过以这种方式传递会话ID,但我不确定在公开会话ID时是否存在固有的安全风险。欢迎任何建议或想法。

**编辑 - 我应该说明脚本文件(include.php)是一个不同的域名

3 个答案:

答案 0 :(得分:3)

您始终以某种方式公开会话ID - 在Cookie或GET参数中。携带会话ID本身并不存在安全风险。 (编辑:这是指同域链接。跨服务器会话传播是一个不同的问题,很好地概述了例如here)。

但是,如果可能的话,考虑在文档本身中执行脚本的所有动态位:

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

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

这将允许您将外部JavaScript作为静态资源,这很好,因为

  • 它很容易被缓存,因为它没有动态位
  • 可以通过Web服务器进行压缩
  • 它不需要单独的PHP进程来提供服务。

答案 1 :(得分:0)

你的意思是这样吗?

<script>
  var is_logged = <? echo $_SESSION['logged'] ? "true" : "false"; ?>;
</script> 
<!--other stuff and html here-->
<script>
if(is_logged){
 //do stuff
}
</script>

答案 2 :(得分:0)

也许我错了但是不可能在Firefox中看到你的会话ID和cookie数据?如果是,我认为没有安全风险,可以在Url中看到它