文档章节

表单数据的加密传输

chaun
 chaun
发布于 2015/10/19 23:24
字数 1216
阅读 43
收藏 0

 一、表单数据的提交方式选择

       常用的与服务器进行的交互方式是GET和POST(关于两者的区别此处有详细的介绍),而一般在表单的数据提交中,都会选择POST方式,因为使用GET方法数据是通过URL传递的,在地址栏中会直接看到传递的数据,这样就缺少安全性。而使用POST传递时,是把提交的数据放置在HTTP包的包体中,地址栏不会看到数据。但是这样处理就能确保提交数据的安全性吗?

 

 

二、web数据传递的不安全性

        客户要浏览web网页,都是先连接web服务器,请求该网页文件,下载到本地再由浏览器解释执行最终看到丰富多彩的网页。http协议的这种工作模式,决定了web数据面向客户是开放的,实际http包在网络中也是通过明文传递的,通过一些抓包软件很容易捕捉到http包,自然也能得到用户提交的web数据。如右图是用wireshark抓到人人网登录时传递的数据包,从捕获的数据包中可以发现使用的是post方法提交数据,但从http包的包体中很容易找到提交的账号及密码,这样用户的信息在网络上进行传递时很容易被窃取。

三、用RSA加密web数据

      为了提高web数据传递的安全性,故在数据在网络上进行传递之前必须进行加密处理,如使用https进行web数据的完全加密传输,但是因为https是对所有的数据进行加密这样就影响了网页的浏览速率,况且有时只需对关键数据进行加密保护。这时就需要一些小规模的数据加密传输解决方法,此文提供了一种用RSA加密算法加密web数据,具体是在客户端用js脚本使用公钥加密数据,再在服务器端用PHP脚本程序使用私钥解密数据。在这为什么要使用非对称的加密算法RSA,为什么不使用加解密效率更快的对称加密算法如AES,DES,我个人认为是因为对称加密算法加密和解密使用的是同一密钥,而web文件都是下载到本地再解释执行的,这样再客户端的加密脚本程序很容易被用户看到同时也容易泄漏密钥,使用对称加密算法加密的数据也就丧失了安全性,但是使用非对称加密算法,只有私钥能解密出公钥加密的数据,所以只要确保私钥的保密性,就能确保经过公钥加密数据的安全性。

四、完善的加密传输方法

      如果使用RSA加密传输web数据,每次会话使用的都是同一密钥对,则可能存在非法用户冒充攻击,非法用户截获到用户向服务器提交的数据,虽是加密后的数据,但非法用户仍然可以直接向服务器POST截获到的加密后的数据,服务器端一但解密验证通过,则非法用户达到冒充合法用户的目的。这就是因为每次会话使用的是同一密钥,使每次登陆时提交的用户数据都是一样的,即使被加密,加密后的数据也是一样的,从而存在非法用户冒充合法用户的可能。解决这个问题的一个好的方法是没次会话使用不同的密钥对,这样即使非法用户再次提交加密后的数据,由于两次会话使用的是不同的密钥对,使得提交的数据在服务器端不能正确解密,从而验证出错。在用户登录时的具体实现是用户在提交数据前客户端先异步请求服务端生成本次会话密钥,并向客户端返回公钥,客户端再用公钥加密数据提交给服务端,服务端用私钥解密验证完后注销此次会话密钥。这样就确保用本次会话公钥加密的数据再次被提交到服务器端时服务端因使用的不是与之配对的私钥,不能解密出正确的数据从而验证失败,有效地避免了非法用户的冒充攻击。

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/lj_hero/article/details/5969871

共有 人打赏支持
chaun
粉丝 91
博文 269
码字总数 91059
作品 0
深圳
高级程序员
私信 提问
表单加密处理--jCryption

jCryption 在网页上使用 JavaScript 对将提交的表单数据进行 RSA 加密,提交到服务器后,在PHP中队数据进行解密,以保证数据在传输过程中的安全性。 在正常情况下,当提交数据时,如果没有S...

匿名
2010/03/09
3.6K
1
HTML 标签的 method 属性

实例 在下面的例子中,表单数据将通过 method 属性附加到 URL 上: <form action="form_action.asp" method="get"> <p>First name: <input type="text" name="fname" /></p> <p>Last name: <......

Amamatthew
2014/09/18
0
0
分享如何使用PHP将URL地址参数进行加密传输提高网站安全性

大家在使用PHP进行GET或POST提交数据时,经常会在URL带着参数进行传递,比如www.mdaima.com/get.php?id=1&page=5,这里就将id编号和page页码进行了参数传递,如果这样直接明文传输,会将参数...

james_laughing
2016/10/28
3
0
KeyPass勒索软件——藏在虚假软件背后的黑手

     在过去的几天里,我们的反勒索软件模块检测到一个新的恶意软件变种——KeyPass勒索软件。安全社区的其他人也注意到此勒索软件从8月份开始积极传播:      MalwareHunterTeam通知...

嘶吼RoarTalk
08/29
0
0
巧用Foxit Phantom制作完美PDF文件

如今PDF格式的文件已经被广泛被运用到电子出版、电子商务、电子政务、文档管理等领域。具体的说,广告\名片印刷、公司文档、邮件附件传输、网络资料都可见PDF的踪影。因为这种文档格式体积小...

wendy
2010/02/04
7
0

没有更多内容

加载失败,请刷新页面

加载更多

龙芯jdk或java开发

龙芯的jdk安装包可以从www.loongnix.org下载。 4.支持的软件 龙芯JDK在每一次发布产品之前,都会使用一个应用程序列表进行兼容性测试,如表4-2所示。这个列表中既包含简单的Java应用程序,也...

gugudu
5分钟前
0
0
Docker + selenium + jenkins 并行跑自动化测试

背景 目标:使用docker做UI自动化测试并在Jenkins运行 调试环境:MocOS 运行环境:Linux ubuntu + docker 涉及工具:docker,selenium,unittest, jenkins 基本思路 找一个适合做自动化的doc...

呐呐丶嘿
9分钟前
0
0
android分辨率,屏幕尺寸,屏幕密度关系

名词定义分辨率分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕在宽度方向有720个像素...

GoldenVein
20分钟前
1
0
inux驱动的异步通知(kill_fasync,fasync)---- 驱动程序向应用程序发送信号

===========================应用程序========================= #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <poll.h> #include <sign......

天王盖地虎626
21分钟前
1
0
使用android studio时,ADB连接不上手机可能性之一

问题描述:as是通过adb连接手机进行调试了,如果电脑装了鲁大师,360等软件,可能会存在adb被这些软件占用的情况,所以会连接不上手机。这种解决方案有很多,比如通过任务管理器查看是谁占用...

白话
24分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部