我决定将 knockout.js 用于我的 Web 应用程序,并且对安全性有一些担忧。
数据流向如下:
- 用户通过 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);
现在我知道我可以通过在创建视图模型之前从 javascript 代码中加载 json 来实现相同的目标,$.getJSON
例如。
但是,在浏览器上安装了开发者工具扩展的人也可以看到(并且可能编辑?)这些数据。这是一个特殊的问题,其中一些数据包含权限标志等内容。
我的问题是,您如何确保传递给您的视图模型的数据不会被篡改?