Web アプリケーションに knockout.js を使用することにしましたが、セキュリティに関していくつか懸念があります。
データの流れは次のとおりです。
- ユーザーはURL経由でコントローラーをリクエストします
- コントローラーは必要な情報をまとめて、json 文字列としてビューに送信します
- json 文字列が dom に保存され、javascript コードがアクセスできるようになります
- json は $(document).ready 内のノックアウト ビュー モデルに読み込まれます。
私の問題は、「ソースの表示」をクリックするだけでユーザーがjson文字列を明確に表示できることです。これは、クライアント側で簡単に変更できることを知っているためですが、その意味が完全にはわかりません.
私のポイントを説明するためのコード例を次に示します。まず、コントローラー:
function view($id = null)
{
//other processing...
$data = array();
$data['json'] = $this->get_profile_json($id);
$this->load->view('profile_page',$data);
}
プロフィールページビュー
<script type="text/javascript">
window.profile_json = "<?php echo $json; ?>";
</script>
<script type="text/javascript" src="<?php echo site_url('assets/js/profile_page.js'); ?>"></script>
<!-- The profile page below... -->
プロフィールページのJavaScript
var vm = new ViewModel(profile_json); //load the json into view model
ko.applyBindings(vm);
$.getJSON
たとえば、ビューモデルを作成する直前に、JavaScriptコードからjsonをロードすることで、同じ目標を達成できることがわかりました。
ただし、ブラウザーに開発者ツールの拡張機能を使用しているユーザーは、このデータも表示 (および編集) することができます。これは特定の問題であり、そのデータの一部に権限フラグなどが含まれています。
私の質問は、ビュー モデルに渡されたデータが改ざんできないようにするにはどうすればよいですか?