質問: ページが読み込まれた後に変更されるPHP変数をJavaScriptへ気軽に渡したいと思っています。 セッション変数をajaxでjsonにより、まるごとJavaScriptへ渡すスクリプト作成し、汎用性を持たせて使い回す事は、安全性で問題はないでしょうか? 気をつける点などございましたら、教えてください。 ``` function getSession( elemName ) { return $.ajax( { url: "get-session.php", type: "POST", cache: false, contentType: false, processData: false, data: { getElem: elemName }, dataType: "json" } ) } ``` ``` function getValue() { getSession( "element" ).done( function ( result ) { alert("result"); } ).fail( function ( result ) { alert("失敗"); } ); } ``` ```
回答: ちょっと前提条件がよくわからないのですが、質問の意図について以下の二通りの解釈が可能だと思っています。 (1)ページが読み込まれた後、データをJavaScritに渡したい こちらは通常のAJAXとなり、受け渡しのデータフォーマットとしてJSONを使うことは一般的です。その際のセキュリティ上の注意については、もう少し情報をいただかないとなんとも言えません (2)PHPでHTMLを作成する際に、JavaScriptにデータを渡したい こちらについても、JSONを用いる手法が奥一穂氏から提唱されています。 サーバサイドからクライアントサイドのJavaScriptを呼び出す際のベストプラクティス Inline JSONPの長所について (続: サーバサイドからクライアントサイドのJavaScriptを呼び出す際のベストプラクティス) どちらの話題でしょうか? コメント拝見しました。(1)でトライされているのですね。 まず、AJAXの通信内容は他人からは見えませんが、利用者本人からは閲覧できます。なので、利用者本人にも見せたくない情報はAJAXのJSONに含めてはいけません。 また、JSONの内容の書き換えについても同様で、他人は書き換えできませんが、利用者本人はJSONの内容を書き換えできます。このため、利用者によって書き換えられては困るようなものも送ってはいけません。ただし、このあたりの判断は実は難しくて、「画面上で表示が変わるだけなら問題ない」、「JavaScriptの演算結果によって利用者に利益が得られるような場合は問題になる可能性が高くなる」等の違いが出てきます。なので、もう少し具体化した質問をされた方が有益な回答が得られやすいと思います。 そもそもAJAXがうまく動かないのであれば、まずは別の質問でそちらを解決された方がよいと思います。