0

もともと私は次の構造を持っていました:

index.htmlファイル:

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

myfunctions.jsファイル:

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

そのようにして2,500行以上の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 変数を使用するという目的は達成しましたが、ブラウザーの Web ページに、含まれているすべての機能が表示され始めたことに気付きました。つまり、最初のケースで、デバッグ ツールを使用してページを表示したり、保存したりした場合です。ディスク上のそのページには、index.html に含まれる小さな JavaScript コードしか表示されませんでしたが、index.php ファイルを参照または保存すると、myfunctions.js.php のすべての関数が表示されます。もちろん、表示内容は変わりませんが、実際の出力は 2,500 行長くなりました。それはセキュリティ上の問題になりますか?JavaScript で PHP 変数を表示するこの方法を避けるべきですか、それとも気にせずそのままにしておくべきですか?

私の懸念は、2 番目のケースではすべての関数が開かれるため、悪意のあるユーザーがサーバー側の PHP スクリプト名と必要なパラメーターをすべて見ることができ、攻撃の手段が増えることです。

4

3 に答える 3

2

PHP コードはサーバー上で処理されるため、その PHP の出力を誰でも見ることができます。したがって、PHP コードはまだ隠されています。

HTML 出力に PHP コードが表示されている場合は、サーバーが正しく構成されていないか、構文エラーが発生しており、パーサーが処理しようとしている内容がエコーアウトされています。

于 2013-11-12T21:45:55.150 に答える
0

index.php を使用することは問題ありませんが、そのような JS ファイルの PHP インクルードを実際に実行する必要はありません。

それを行う最も簡単な方法は、あなたが行っていたようにJSファイルを含めることです

<script src="myfunctions.js" />

次に、user_id を出力する PHP ファイルに少量の Javascript を追加します。

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

次に、関数4は次のようにアクセスできます

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

理想的には、関数をオブジェクトまたはモジュールの一部として使用する必要があります。

もう 1 つの方法は、関数 4 でサーバーに user_id を照会し、それを何らかの方法でキャッシュすることです。

于 2013-11-12T23:41:29.407 に答える