Javascript软键盘设计
国内大多数网站的密码在网络传输过程中都是明文的,我们目前正在做的产品也是这样的情形,这正常吗? 大家都偷懒?不重视安全?各人持有观点,有人认为明文传输并不是想象中的那么可怕,事实上正常情况下这些报文你根本监听不到,除非你种木马、入侵路由器、局域网监听等,所以在这种情况下互联网公司一般没必要花太大代价进行处理?其实不然一个好的产品,为用户考虑的产品,就是要把这些看似不起眼的事情做好。
有个案例,听老大讲的。说的是xx公司搞两个同样功能的产品,其中一个产品做得很戳,但价格卖1000,先拿给用户使用;另一个产品设计各方面功能都对用户很体贴,价格只卖500元,这时用户一对比就会产生价值,肯定会去选择第二个产品,而且用着没得怨言,这样销量肯定会比第一个高。好了,不说废话了,先说本次讲的东西。
网络监听大致分为三块:客户端、网络端、服务端,这个不难理解的;首先服务端的安全,这个在你购买网络服务的时候需要慎重选择,安全方面是否可信,网络管理员需要及时对服务器打补丁,阻止黑客利用漏洞进行服务器攻击,这方面的东西太多了,我也是大概了解,本文就不细说。
网络传输过程数据的安全,举一个很简单的例子,如果我用笔记本在一个租房比较密集的小区,建立一个无密码的wifi热点,保证很多试图蹭网的人连接上来,然后如果我用WireShark(或者用WinPcap写一个过滤程序),监听WiFi收到转发的数据包,那一定能截获大批的用户名和口令,如果你登录网站的用户名和密码都是明文传输的,那就轻而易举的得到这些隐私性的数据了,这个例子也说明,各位千万不要贪图小便宜而去蹭别人的WiFi,这是一个对自己来说很危险的行为。实施网络窃听是如此的容易,甚至不需要额外安装什么黑客软件就可以进行。对于很多场合,我们对于传输的内容被窃取并不关心,我不怕别人知道我看了什么新闻,也不怕别人知道我在网站上回答了什么问题,但是用户名和口令这样的身份鉴别信息是绝对不可以被窃取的,因为可能会引起一系列其他的安全问题,大多数人的密码都会有相似情况或者干脆用一个密码吧?因为密码太多怕忘记。前段时间CSDN泄漏用户信息以后大家都在改密码就能说明问题,公司领导也提醒我们内部xx员工系统的密码是明文的,请大家慎重设置个人秘密。个人认为对于关键身份能有鉴别性的信息再传输时进行加密是一种非常有必要的,而且也是非常重要的事情。
客户端攻击,攻击者利用木马程序监控用户的键盘,鼠标等操作信息,最后把数据传到盗号者指定的地方,盗号者利用收集的数据就会分析出敏感信息。木马一般都是有针对性的,比如针对指定的网站,特定的页面进行监听,常见的监听就是对键盘,cookie值,鼠标其次吧,当用户访问xx网站的登录界面时,需要输入账号和密码,这时木马就会将当前所在的网址和当前输入的一系列操作收集并发送到盗号者手中,是不是很简单?所以,为了避免这种情况软键盘就应运而生了,因为软键盘在输入内容时是通过鼠标去点击,不需要键盘操作,如果要想监听用户的鼠标操作,每次鼠标点击时对特定区域截屏,多次连续点击就需要连续截图,最后打包发送(这种方式的木马很容易被发现),另外木马程序不得不针对该特定网站而重新编写,没用通用性,当然盗号者如果觉得有这个必要的话,那就不说了,没得任何方法是安全的。最后说ocx控件,支付宝,各大网银的密码输入框框都是“安全控件”,安不安全那的黑客们说了算,这个本文不讨论了,本文是说软键盘,用javascript编写的软键盘。
我发觉我写文好痛苦,忽悠了半天没有进入主题,越扯越远,终于开始写与软键盘相关的东西了,希望以后能够慢慢提高。。。
上面都说了为何要做软键盘,一是防止客户端有木马,二是网络传输过程中不使用明文传输。效果图,如下:
软键盘设计步骤:1、服务器端将数字、字母、特殊字符分成三部分,分别对这三部分字符串随机排序,并记录键盘布局,放session中。
2、客户端根据服务器生成的键盘布局利用javascript动态生成软键盘及布局。
3、用户鼠标点击软键盘内的按钮的时候文本框会有一个黑点,这个黑点其实是一个随机数,并非真实的密码内容。真实密码的坐标存放到一个列表中。
4、客户端会涉及到坐标转换;字母<--->坐标相互转换。
5、当光标离开密码框,将坐标列表转换为文本字符串赋值到文本框中。会出现一个现象就是,明明只输入了6位数字的密码,但小黑点的数量可能会有十多位,因为这不是明文的密码。
6、用户提交表单的时候,提交到服务器的是密码对应的坐标数据。
7、最后服务器利用session中的键盘布局,解析坐标为真实密码。
注意:该方法还是有漏洞,还请读者自己猜怎么破解密码,其实很简单,javascript是客户端代码,算法都暴露的,网页是dom结构,人人都可以看的,呵呵,懂了吧。
客户端javascript其实也支持rsa非对称加密算法,客户端根据公钥加密坐标数据,服务器端在利用私钥解密坐标,性能是个问题,个人觉得没必要搞这么多设计在里面了。
(未完)
Javascript软键盘设计的更多相关文章
- Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..
Atitit.获得向上向下左的右的邻居的方法 软键盘的设计.. Left right可以直接使用next prev.. Up down可以使用pix 判断...获得next element的posit ...
- form表单提交和ajax表单提交,关于移动端如何通过软键盘上的【搜索】和【前进】进行提交操作
[文章来源]由于自己对于form研究甚少,所以一直用的都是AJAX进行提交,这次后台提出要用form提交,顺便深入研究一下:之前在做表单的时候,发现input可以通过设置不同的type属性,调用不同的 ...
- ios下input获取焦点以及在软键盘的上面
<!----/此方法基于zepto.min.js--> <!--/div元素没有blur和focus事件,blur focus 只适用于input 这类的表格元素--> < ...
- Android 另类方法监听软键盘的弹出收起事件
http://www.cnblogs.com/csonezp/p/5065624.html 最近做的项目碰到个问题,a界面是fragment+recyclerview,b界面带个edittext,并且 ...
- android 表情,软键盘冲突解决方案(仿微博等SNS应用)
之前总想搞一下这个模块,可是由于忙碌总是推迟,现在就把这块好好的弥补过来,下面是我实现的思路.本人才疏学浅,还望大家不要见笑. 首先我们还是先看写示例: 上面应用应该不用我过多介 ...
- JS软键盘代码
页面代码如下: <HTML> <HEAD> <TITLE>一个不错的js软键盘代码</TITLE> <meta http-equiv=" ...
- jQuery软键盘插件
1.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.or ...
- Android中软键盘弹出时底部菜单上移问题
当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...
- popupwindow中EditText获取焦点后自动弹出软键盘
关于popupwindow中EditText获取焦点后自动弹出软键盘的问题,玩过手机qq或空间的童鞋应该知道,再点击评论时会弹出一个编辑框,并且伴随软键盘一起弹出是不是很方便啊,下面我们就来讲一下实现 ...
随机推荐
- git命令笔记
git -bare init git remote add origin ssh://myserver.com/home/git/myapp.git git remote show origin [r ...
- [Android]Volley源码分析(三)
上篇看了关于Request的源码,这篇接着来看下RequestQueue的源码. RequestQueue类图:
- Mysql学习笔记(八)由触发器回顾外键约束中的级联选项
近些天都没有写博客.在学习mysql的知识,通过学习和练习,也熟悉了mysql的函数.触发器.视图和存储过程.并且在实际的开发过程中也应用了一小部分.效果还是十分理想的. 今天晚上在学习触发器模仿in ...
- linux快速安装lamp环境
我折腾过不少的lamp安装方式,lnmp也折腾过.不过因为windows下面apache用的比较多,各种配置也比较熟悉,因此最终还是选择了lamp这个架构. 由于是自己装虚拟机玩,所以各种安全措施都没 ...
- Ajax 简述
说到Ajax大家一定不陌生,但是真要具体说说它是什么?估计给出完整定义的人应该不多. W3C上给Ajax的具体定义为: AJAX = Asynchronous JavaScript and XML(异 ...
- matlab连接sql数据库
最近项目还涉及到matlab连接数据库,下面我就记录如何进行配置使得matlab能够连接sql数据库.由于最近工程做的多一些,所以分享的都在工程配置上,当初为了这些配置可是反复卸载与重装,算法其实也有 ...
- jquery id选择器 id带"."问题
例如控件ID为user.id 使用$("#user.id")不能得到正确的结果 必须使用\\转义 即$("#user\\.id")
- Java——包的概念及使用
package是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序中加入package关键字即可 编译语法: javac -d . HelloWord.java -d:表示生成目录,生 ...
- Tomcat web.xml中定义了文件扩展名到MIME类型的对应关系
Tomcat在返回静态资源时,会根据资源文件的扩展名产生对应的content-type头(也即MIME类型)添加到response header中. 在Tomcat的web.xml规定了扩展名及相应M ...
- activity栈的关系
android:intent flags 一.Activity和Task(栈)的关系 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面, ...