有人可以告诉我最好的方式(或者,如果可能的话)访问注入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)是一个不同的域名
答案 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作为静态资源,这很好,因为
答案 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中看到它