PHP-将json传递给视图模型时保持安全
作者:互联网
我决定在我的Web应用程序中使用基因敲除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);
现在我知道我可以通过从JavaScript代码之前加载json代码来实现相同的目标
创建视图模型,例如使用$.getJSON.
但是,在浏览器上具有开发人员工具扩展名的人也可以看到(并可能进行编辑?)
这个数据也是.这是一个特殊的问题,因为其中某些数据包含权限标志之类的内容
等等.
我的问题是,如何确保传递到视图模型的数据不会被篡改?
解决方法:
无法从客户端保证您信息的安全性.这就是为什么服务器端对信息进行检查,然后将信息是否可用发送给您的响应,这一点始终很重要.
对于某些安全性检查,应使用以下内容:
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
始终可以篡改要传递到后端的客户端信息,这就是为什么尽可能地将其锁定很重要的原因,如果任何信息看起来无效,那么您应该立即向客户并要求他们重试:)
假设后端数据是安全的,那么前端数据应该永远不会有问题.
希望这可以帮助!
标签:codeigniter,security,knockout-js,json,php 来源: https://codeday.me/bug/20191201/2077464.html