国内大多数网站的密码在网络传输过程中都是明文的,我们目前正在做的产品也是这样的情形,这正常吗? 大家都偷懒?不重视安全?各人持有观点,有人认为明文传输并不是想象中的那么可怕,事实上正常情况下这些报文你根本监听不到,除非你种木马、入侵路由器、局域网监听等,所以在这种情况下互联网公司一般没必要花太大代价进行处理?其实不然一个好的产品,为用户考虑的产品,就是要把这些看似不起眼的事情做好。

  有个案例,听老大讲的。说的是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软键盘设计的更多相关文章

  1. Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..

    Atitit.获得向上向下左的右的邻居的方法 软键盘的设计.. Left right可以直接使用next prev.. Up down可以使用pix 判断...获得next element的posit ...

  2. form表单提交和ajax表单提交,关于移动端如何通过软键盘上的【搜索】和【前进】进行提交操作

    [文章来源]由于自己对于form研究甚少,所以一直用的都是AJAX进行提交,这次后台提出要用form提交,顺便深入研究一下:之前在做表单的时候,发现input可以通过设置不同的type属性,调用不同的 ...

  3. ios下input获取焦点以及在软键盘的上面

    <!----/此方法基于zepto.min.js--> <!--/div元素没有blur和focus事件,blur focus 只适用于input 这类的表格元素--> < ...

  4. Android 另类方法监听软键盘的弹出收起事件

    http://www.cnblogs.com/csonezp/p/5065624.html 最近做的项目碰到个问题,a界面是fragment+recyclerview,b界面带个edittext,并且 ...

  5. android 表情,软键盘冲突解决方案(仿微博等SNS应用)

    之前总想搞一下这个模块,可是由于忙碌总是推迟,现在就把这块好好的弥补过来,下面是我实现的思路.本人才疏学浅,还望大家不要见笑. 首先我们还是先看写示例:            上面应用应该不用我过多介 ...

  6. JS软键盘代码

    页面代码如下: <HTML> <HEAD> <TITLE>一个不错的js软键盘代码</TITLE> <meta http-equiv=" ...

  7. jQuery软键盘插件

    1.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.or ...

  8. Android中软键盘弹出时底部菜单上移问题

    当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...

  9. popupwindow中EditText获取焦点后自动弹出软键盘

    关于popupwindow中EditText获取焦点后自动弹出软键盘的问题,玩过手机qq或空间的童鞋应该知道,再点击评论时会弹出一个编辑框,并且伴随软键盘一起弹出是不是很方便啊,下面我们就来讲一下实现 ...

随机推荐

  1. crawler:简要了解一下PhantomJS

    有时,我们需要浏览器处理网页,但并不需要浏览,比如生成网页的截图.抓取网页数据等操作.PhantomJS的功能,就是提供一个浏览器环境的命令行接口,你可以把它看作一个“虚拟浏览器”,除了不能浏览,其他 ...

  2. 关于git不区分文件名大小写的处理

    今天遇到了git不区分文件名大小写的问题,一开始着实郁闷了一把. 处理办法: windows下在git中修改文件的大小写 git mv --force myfile MyFile 或者 git mv ...

  3. AngularJs 脏值检查及其相关

    今天突然就想写写$digest和$apply,这些都是脏值检查的主体内容. 先以普通js来做一个简单的监控例子吧: var div = ducoment.getElementById("my ...

  4. django rest framework

    Django-Rest-Framework 教程: 4. 验证和权限 作者: Desmond Chen, 发布日期: 2014-06-01, 修改日期: 2014-06-02 到目前为止, 我们的AP ...

  5. 编译安装redis

    一.版本说明 CentOS版本 [root@localhost ~]# uname Linux [root@localhost ~]# uname -r 2.6.32-431.el6.i686 [ro ...

  6. 在线考试系统(Online Exam System)--ASP.NET

    用户设计 -|学生 -|老师 -|管理员 学生结构设计 -|个人信息管理 -|修改个人信息 -|修改登录密码 -|选课中心 -|显示所有老师所开课的信息可进行选课 -|显示自己已选课程 -|在线考试 ...

  7. ecshop怎么添加配送方式

    步骤1.打开includes\modules\shipping文件夹,把sto_express.php复制多一份,重名为tt_express.php: 步骤2.打开tt_express.php,ctr ...

  8. php 下载文件的函数

    通过函数完成下载文件的PHP功能代码 function download($url, $filename) { // 获得文件大小, 防止超过2G的文件, 用sprintf来读 $filesize = ...

  9. Jexus-5.6.3使用详解

    一.Jexus Web Server配置 在 jexus 的工作文件夹中(一般是"/usr/jexus")有一个基本的配置文件,文件名是"jws.conf".j ...

  10. Code Contracts for .NET

    https://visualstudiogallery.msdn.microsoft.com/1ec7db13-3363-46c9-851f-1ce455f66970