【发布时间】: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