javascript实现表单提交加密

通常表单的提交有两种方式,一是直接通过html的form提交,代码如下:

<form action="" method="" id="forms">
<input type="text" name="username" value="" />
<input type="password" name="pwd" value="" />
<input type="submit" value="提交"/>
</form>

但有时候我们会出于安全角度考虑,给用户输入的密码进行加密,方法一就没办法解决这个问题,这时候我们同常会选择另一种方法,使用javaScript来进行表单提交,代码入下:

<!--HTML-->
<form action="" method="" id="test_form">
<input type="text" name="username" value="" />
<input type="password" name="pwd" value="" />
<button type="button" onclick='doSubmitForm()'>提交<button/>
</form> <script>
var form = document.getElementById('test_form');
//这里再次修改input内容 form.submit();
</script>

这种方法有个缺点就是,打乱正常的表单提交程序,通常用户输入完成后点击回车键就可以提交,但是这个方法实现不了,所以,使用下面的方法便可以解决这个问题,,通过form自身的onsubmit方法,来触发提交,然后进行input的修改:

<!--HTML-->
<form id='test_form' action='' method='' omsubmit='return checkForm()'>
<input type='text' name='username' value=''/>
<input type='password' name='pwd' value =''/>
<button type='submit'>提交<button/>
<form/> <script>
function checkForm(){
var form = document.getElementById('test_form');
//可在此修改input
//进行下一步
return ture;
}
<script/>

注意,checkForm()方法中,return true时,表单才会正常提交,为false时,浏览器将不会提交,通常是用户的密码输入错误时,终止提交。

之前说过,为安全考虑用户提交时,一般对密码进行加密处理,代码如下:

<!--HTML-->
<form id='test_form' action='' method='' omsubmit='return checkForm()'>
<input type='text' name='username' value=''/>
<input type='password' name='pwd' id='pwd' value =''/>
<button type='submit'>提交<button/>
<form/> <script>
function checkForm(){
var pwd= document.getElementById('pwd');
pwd.value= toMD5(pwd.value);
//进行下一步
return ture;
}
<script/>

这种做法看上去没问题,但是当用户输入完成后,提交会发现密码框的 * 会由几个瞬间变成 32个,这是由于MD5加密造成的(MD5有32个字符);如果想避免出现这种情况,需要充分利用到,代码如下:

<!--HTML-->
<form id='test_form' action='' method='' omsubmit='return checkForm()'>
<input type='text' name='username' value=''/>
<input type='password' id='input_pwd' value =''/>
<input type='hidden' name='pwd' id='md5_pwd' value=''/>
<button type='submit'>提交<button/>
<form/> <script>
function checkForm(){
var input_pwd= document.getElementById('input_pwd');
var md5_pwd= document.getElementById('md5_pwd');
md5_pwd.value= toMD5(input_pwd.value);
//进行下一步
return ture;
}
<script/>

注意:<input type=‘password’/>是用户输入密码的input框,并没有设置 name 属性,而是给<input type=‘hidden’ />设置了 name=‘pwd’,这样表单提交只会提交带有name属性的输入框,从而解决了上面的那个问题。

最新文章

  1. The Practice of .NET Cross-Platforms
  2. Android jni简便开发流程
  3. HDU 5920 Ugly Problem
  4. jQuery 根据城市时区,选择对应的即时时间
  5. document.body.clientHeight和 document.documentElement.clientHeight 的区别
  6. Ubuntu 16.10 在 VMware 上无法安装的解决办法
  7. Struts2的输入校验(1)——校验规则文件的编写
  8. (转)Ratchet教程:Buttons组件
  9. 【PHP开源产品】Ecshop的商品筛选功能实现分析之一
  10. Jenkins动态部署方案
  11. Android build-tools升级到23.0.0_rc1无法解决编译后的问题
  12. Entity Framework笔记(一)
  13. 第七届蓝桥杯javaB组真题解析-凑算式(第三题)
  14. 【BZOJ2882】工艺(后缀自动机)
  15. flask之wtforms
  16. Nintex History in Form Table
  17. oracle数据库删除数据恢复
  18. PFM 图片格式
  19. Java:Cookie实现记住用户名、密码
  20. A1074. Reversing Linked List

热门文章

  1. 三十三、python中configparser配置文件相关操作
  2. 查看centos的版本信息
  3. Delphi XE2 之 FireMonkey 入门(15) - 滤镜: 获取滤镜信息
  4. 阶段1 语言基础+高级_1-3-Java语言高级_03-常用API第二部分_第4节 System类_3_System类的常用方法
  5. ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/var/run/mysqld/mysqld.sock&#39;
  6. How to use Nlog for ASP.NET Core with csproj
  7. linux(centos7.0以上)下对mysql数据库的导入导出
  8. Windows7 系统安装
  9. 信息收集【采集点OWASP CHINA】网址http://www.owasp.org.cn/
  10. TVA金额的计算,以及应该放在那里