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

  有个案例,听老大讲的。说的是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. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  2. HDU 5904 LCIS (最长公共上升序列)

    传送门 Description Alex has two sequences a1,a2,...,an and b1,b2,...,bm. He wants find a longest common ...

  3. Servlet3.0中Servlet的使用

    目录 1.注解配置 2.异步调用 3.文件上传 相对于之前的版本,Servlet3.0中的Servlet有以下改进: l  支持注解配置. l  支持异步调用. l  直接有对文件上传的支持. 在这篇 ...

  4. 设计模式-14 MVC模式

    一 MVC设计模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式,它是一个存在于服务器 表达层的模型,它将应用分开,改变应用之间的高度耦合 MVC设计模式将 ...

  5. BZOJ4445: [Scoi2015]小凸想跑步

    裸半平面交. 记得把P0P1表示的半平面加进去,否则点可能在多边形外. #include<bits/stdc++.h> #define N 100009 using namespace s ...

  6. js022-高级技巧

    js022-高级技巧 本章内容: 使用高级函数 防篡改对象 Yielding Timers 22.1 高级函数 1.安全的类型检测 2.作用域安全的构造函数 构造函数实际上是一个使用new操作符调用的 ...

  7. Git创建ssh-key

    打开git bash界面,输入: ssh-keygen -t rsa -C "yourname@email.com" 一路回车,后续保持默认值即可. 把C:\users\yourn ...

  8. 记一次DDos攻击--2016/12/8

    先上图 图一 图二 午休之后~ 睡意朦胧,报警来了.看到121121Mbps的流量攻击,精神一震. 不到两秒,又来了一个短信,开始心塞.网站入口IP被封了.打开网站,全站瘫痪.紧接着运营就来了,让运营 ...

  9. git push to nas

    1 建nas目录 在nas的/volume1/git_repos目录下新建相关的目录,并在该目录下运行git init --bare cd /volume1/git_repos mkdir wifi_ ...

  10. Linux下开发常用 模拟 Http get和post请求

    1.get请求 curl "http://www.baidu.com"      如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl -i "htt ...