【问题标题】:Showing PHP variable in Javascript - Security point在 Javascript 中显示 PHP 变量 - 安全点
【发布时间】:2013-11-12 21:44:32
【问题描述】:

最初我有以下结构:

index.html 文件:

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

myfunctions.js 文件:

...
function one() {
....
}
function two() {
....
}
function three() {
....
}

这样我写了超过 2500 行 Javascirpt,但后来我不得不向函数添加一个 PHP 变量,所以我不得不将 index.html 重命名为 index.php,将 myfunctions.js 重命名为 myfunctions.js.php 并进行以下更改:

index.php 文件:

...
<?php
    include("myfunctions.js.php");
?>
...

myfunctions.js.php 文件:

<script>
...
function one() {
....
}
function two() {
....
}
function three() {
....
}
function four() {
    var x = <?php echo $_conf['user_id'];?>
    console.log(x);
}
</script>

我已经实现了在 JavaScript 中使用 PHP 变量的目的,但我注意到浏览器中的网页开始显示所有包含的函数,即如果在第一种情况下,当我使用调试工具查看页面时或者通过将该页面保存在磁盘上,我只看到 index.html 中包含一些小的 JavaScript 代码,但现在查看或保存 index.php 文件,我看到 myfunctions.js.php 中的所有函数都可见。当然可见内容没有改变,但实际输出增加了 2 500 行。那会是一个安全问题吗?我应该避免这种在 JavaScript 中显示 PHP 变量的方式,还是我不应该关心它并让它保持原样?

我担心的是,在第二种情况下,我的所有函数都会打开,因此恶意用户可以看到所有服务器端 PHP 脚本名称和所需参数,从而提供更多攻击方式。

【问题讨论】:

  • 不要混合数据和脚本。如果您got over 2 500 lines of Javascirpt written,您似乎已经在这样做了。将您的数据转换为 JSON(在 PHP 中),然后将您的 JavaScript 应用于数据。
  • 我不确定我是否理解这里的担忧或问题。无论您做什么,客户端都可以查看 JavaScript 文件。
  • @Paul S. 不,这些不是数据,所有这些都是请求不同 PHP 脚本并显示输出的函数

标签: javascript php security code-injection


【解决方案1】:

PHP 代码在服务器上进行处理,因此任何人都可以查看该 PHP 的输出。所以你的 PHP 代码仍然是隐藏的。

如果您在 HTML 输出中看到 PHP 代码,则说明您的服务器配置不正确,或者您有语法错误,它回显了您打算让解析器处理的内容。

【讨论】:

  • 不,我没有看到 PHP 代码,我只是得到了包含所有 js 函数的更大的输出页面。
  • 如果您不希望一次全部加载它们,这不一定是坏事,因为您可以缓存该文件以提高性能,您可以让您的 PHP 脚本接收哪些函数的参数包含任何给定页面并仅输出这些页面。
【解决方案2】:

使用 index.php 很好,但您并不想像这样对 JS 文件进行 PHP 包含。

最简单的方法是像你做的那样包含 JS 文件

<script src="myfunctions.js" />

然后在输出 user_id 的 PHP 文件中添加少量 Javascript。

function userId() {
    return <?php echo $_conf['user_id'];?>
}

那么函数四就可以像这样访问它了

function four() {
    console.log(userId());
}

理想情况下,您希望您的函数作为对象或模块的一部分。

另一种方法是让函数四向服务器查询 user_id,然后以某种方式缓存它。

【讨论】:

    【解决方案3】:

    小心你没有引入XSS vulerability。如果$_conf['user_id'] 是一个整数,那么你应该没问题,但要小心混合客户端和服务器端脚本这样。 @Paul S 的评论是要走的路。

    更多技巧请看这里https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多