Javascript将内联变量传递给外部:安全问题?

时间:2011-07-08 16:51:11

标签: php javascript jquery html security

所以我环顾四周试图在这上面找到一些帖子,但是有很多但没有一个可以解决我的具体问题(我能找到)。

基本上我需要从我的数据库中获取一些数据到我的外部javascript文档。

我目前正在做的是这样......

<?php for (loop through products): ?>
    <script>
    var $each_image_information = new Array(
        "<?php echo $getVariable; ?>",
         "<?php echo $getVariable; ?>");
    </script>
<?php endfor ?>

然后我的外部.js文件访问变量$ each_image_information。我意识到这有点凌乱的代码,因为这些变量有点全局 - 但我不确定我是否知道可能的(用我的技能组合)替代方案。

我真正的问题是,这是否会为我正在实施的网站带来任何安全漏洞。由于这些值是从数据库回显到内联javascript文件,这些变量可以被操作吗?

这可能是一个愚蠢的问题,但我已经有过SQL注入的经验,当时我不知道那些是可能的,所以我试图在安全方面犯错误。

提前致谢!

3 个答案:

答案 0 :(得分:1)

这就是你在做什么

Sql - &gt; Php - &gt;的Javascript

只要你不这样做

Sql - &gt; Php - &gt; Javascript - &gt; Php - &gt; Sql,那么从SQL注入的角度来看你应该没问题。

Javascript变量总是可以修改的,如果你在SQL查询中使用它们,你应该首先清理它们(mysql_escape_string()或类似的东西)。

答案 1 :(得分:1)

好的,要了解此问题,您必须了解Javascript是客户端。这意味着任何人都可以做任何他们想做的事情,所以答案是“这些变量可以被操纵吗?”是一个响亮的是!如果您只想下载Firebug,您可以根据需要开始将它们更改为最新的Google徽标: - )

但是,这一切都不重要,因为如果用户可以搞乱他们自己的客户端,那就没有安全漏洞了。您需要担心的是用户A在用户B的客户端上获得可怕的代码。如果用户A可以选择这些图像的文件名,这只是一个问题,因为他们可以在这里命名他们的图像插入可怕的代码,并且该代码可以在用户B的计算机上运行。

但是只要你控制图像文件名(或者只是逃避它们中的任何JS),你应该都很好。

答案 2 :(得分:0)

只要你没有提供回数据库的路径,你应该没问题。

请记住,如果您没有返回数据库的路径,但将来可能会有路径,那么您可能希望对数据中的主键进行一些遮挡;为了确保您的内部数据库表示不会暴露,这总是一个好主意。