3

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をロードすることで、同じ目標を達成できることがわかりました。

ただし、ブラウザーに開発者ツールの拡張機能を使用しているユーザーは、このデータも表示 (および編集) することができます。これは特定の問題であり、そのデータの一部に権限フラグなどが含まれています。

私の質問は、ビュー モデルに渡されたデータが改ざんできないようにするにはどうすればよいですか?

4

1 に答える 1

3

クライアント側からの情報の安全性を保証する方法はありません。このため、サーバー側で情報をチェックし、情報が使用可能かどうかについて応答を返すことが常に重要です。

一部のセキュリティ チェックでは、以下を使用する必要があります。

1) Strip_tags($_POST['key'])
2) Check to see if the value is numeric (if its a number)
3) Check to see if it only has alphabet and numbers (if this is all that's allowed)
...and so on

バックエンドに渡されるクライアント側の情報は常に改ざんされる可能性があります。そのため、可能な限りロックダウンすることが重要であり、有効であると思われない情報がある場合は、すぐにエラーをスローする必要があります。クライアントに再試行するように依頼してください:)

バックエンド データが安全であると仮定すると、フロントエンド データに問題が発生することはありません。

お役に立てれば!

于 2012-07-27T19:14:34.717 に答える