小弟碰到一个问题,使用如下方式,定义一个JSON变量,表示用户名密码,然后使用EXT库向服务器发送请求,然后delete该变量,并CollectGarbage回收,但是通过一些工具,比如winHex,在IE浏览器的内存中搜索密码关键字bbb,有时候可以搜索到{'password': "aaa",'user': "bbb"}内存片段,有泄密风险,请教各位大侠,如何清理param变量,只要在IE内存中搜索不到就可以了。var param = {'password': "aaa",'user': "bbb"};
//调用EXT库POST请求
Ext.Ajax.request({
url : "xxxxxxx",
method : 'post',
jsonData : param,
success :onSuccess,
fail : this.onRequestFail,
scope : this
});
delete param;
CollectGarbage();
JS变量清理
//调用EXT库POST请求
Ext.Ajax.request({
url : "xxxxxxx",
method : 'post',
jsonData : param,
success :onSuccess,
fail : this.onRequestFail,
scope : this
});
delete param;
CollectGarbage();
JS变量清理
客户端从来都不安全,真的注重安全的话密码要加密,最好使用flash密码框,这样页面代码对其无可奈何,密码也可以很好地加密
这个password是客户端发送的。
那是谁输入的呢?客户输入的。
那客户需要用这么复杂的方式去查自己的密码么?
首先如果在家的话,除非被别人控制,不然不需要。但是如果都被别人控制了,别人不会用木马去偷你所有的密码?何必偷你在ie输入的密码。
如果在网吧,现在的客户端都会下机后自动重启。经过以上分析,楼主你真的考虑安全性走火入魔了。
不是我走火入魔了,是公司安全检测,发现这个问题,那些人走火入魔了,我也比较无语了。
delete param.password;
delete param.user;
delete param;
CollectGarbage();---- 这样,还是不行
既然觉得对象怎么都无法释放,那不生成这个变量也就行了,
你完全可以不用ajax,用表单提交方式
看样子你那些同事要么狗屁不懂,要么就是找茬的,你直接一个js变量都不用,没人有话说了吧?
还有对象传递进了Ext的ajax函数后,函数内肯定有一些动作,而你根本没法干涉,可能函数内部有闭包在保护这个对象,甚至copy了一份,所以你怎么释放外面的变量都是没有用的,所以你最好不用这个ajax函数,才没有这个问题