首发于:用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学

http://jianma123.com/viewthread.aardio?threadid=428

给软件加上网络验证是经常需要用到的实用功能,下面简单示范下怎么用http.get()简单实现网络验证,用来防止客户不给尾款等.

适用场景

1.集团公司给大量员工用的内部软件,防止外传

2.给客户定制的软件在试用版中加上网络验证,防止不给尾款

工作过程

先让用户申请帐号,管理员在后台审核添加帐号,每次登陆前验证下机器码,返回通行码供本地验证.

申请开通帐号按钮:用http.get()方式把"用户名/密码/机器码"提交给http服务端保存到申请表,管理员审核时一条条把它复制到通行表

登陆按钮:用http.get()方式把"用户名/密码/机器码/时间戳"提交,并本地根据这几个参数算法来生成正确的通行码

http服务端收到后根据这几个参数算法来生成正确的通行码响应输出,客户端获取到后用它来与本地生成的通行码对比,如果正确就提示登陆成功

优点

可以验证机器码;

可以验证帐号;

可以因为有时间戳的参与而每次点登陆按钮都是返回不同的通行码,破解者如果不知道验证原理抓包也无法用本地host跳转的方式来破解,只能用od修改软件逻辑判断,增加了破解难度.

缺点

用od修改软件逻辑判断可以轻易破解(一般用户或客户不具备这种能力,如果找人破解也需要付出一定的成本)

防破解

1.可以在验证到通行码不对时启动时钟,电子取证,然后随机秒数后自退

2.加多种暗桩,防止直接修改判断逻辑就突破防线

3.加大破解者损失,暗桩里可以格式化硬盘破坏对方的业务数据文件啥的让对方不敢随便用盗版

核心源码

winform.button.oncommand = function(id,event){

    //申请开通帐号
var name = winform.editName.text;
var pwd = winform.editPwd.text;
var mcode = winform.editMcode.text; var html,errInfo,errCode = http.get("http://jianma123.com:55555/?ac=reg&name="+inet.url.encode(name)+"&pwd="+pwd+"&mcode="+mcode)
//console.varDump(html,errInfo,errCode) } winform.button2.oncommand = function(id,event){ //登陆
var name = winform.editName.text;
var pwd = winform.editPwd.text;
var mcode = winform.editMcode.text;
var tick = time().getMilliTime(); 正确的通行码 = 生成通行码(mcode,tick)
console.log("正确的通行码:",正确的通行码) var htmlStr,errInfo,errCode = http.get("http://jianma123.com:55555/?ac=login&name="+name+"&pwd="+pwd+"&mcode="+mcode+"&tick="+tick)
console.varDump(htmlStr,errInfo,errCode) if(htmlStr==正确的通行码){
winform.msgbox("允许通行")
}else {
winform.msgbox("不允许通行,请联系管理员")
} }

用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学的更多相关文章

  1. 【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!

    C语言/C++编程学习:一个简单的实例 让我们来看一个简单的C语言程序.从下面的程序可以看出编写C语言程序的一些基本特征.   如果你能知道该程序将会在显示器上显示一些内容,那说明你还是知道一些的! ...

  2. Python Twisted网络编程框架与异步编程入门教程

    原作出处:twisted-intro-cn 作者:Dave 译者:杨晓伟 luocheng likebeta 转载声明:版权归原作出处所有,转载只为让更多人看到这部优秀作品合集,如果侵权,请留言告知 ...

  3. GAN网络从入门教程(一)之GAN网络介绍

    GAN网络从入门教程(一)之GAN网络介绍 稍微的开一个新坑,同样也是入门教程(因此教程的内容不会是从入门到精通,而是从入门到入土).主要是为了完成数据挖掘的课程设计,然后就把挖掘榔头挖到了GAN网络 ...

  4. python3+django2 开发易语言网络验证(上)

    创作背景: 在某论坛中下载到一套php开发易语言网络验证的教程,照着看下来,花了两天的时间,结果发现教程里开发的网络验证,以及随着教程一起给学员的源码,都存在着根本用不了的bug!我想要看看能不能在原 ...

  5. python3+django2 开发易语言网络验证(中)

    第四步:网络验证的逻辑开发 1.将model注册到adminx.py中 1.在apps/yanzheng目录下新建admin.py 文件,添加代码: import xadmin from xadmin ...

  6. Xamarin.Android之封装个简单的网络请求类

    一.前言 回忆到上篇 <Xamarin.Android再体验之简单的登录Demo> 做登录时,用的是GET的请求,还用的是同步, 于是现在将其简单的改写,做了个简单的封装,包含基于Http ...

  7. jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)

    最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂. 验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展, ...

  8. shiro 简单的身份验证 案例

    Apache Shiro是Java的一个安全框架,Shiro可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等. 简单的身份验证 项目目录: 首先,在shiro.ini里配置了用户名和 ...

  9. jQuery结合Ajax实现简单的前端验证和服务端查询

    上篇文章写了简单的前端验证由传统的JavaScript转向流畅的jQuery滑动验证,现在拓展一下,使用Ajax实现用户体验比较好的异步查询,同样还是从建立一个简单的表单开始 <form nam ...

随机推荐

  1. SQLServer导入大sql文件报错 对 COM 组件的调用返回了错误 HRESULT E_FAIL。 (mscorlib)

    打开cmd执行(d:\script.sql为sql文件位置):  sqlcmd -S 127.0.0.1 -U sa -P sa -i d:\script.sql    From:https://ww ...

  2. Ubuntu 18 使用docker安装rancher/server:stable并运行kubernetes

    1.安装docker sudo apt-get install docker.io docker的版本:Docker version 17.12.1-ce 2.安装virtualbox-qt,因为vi ...

  3. Python爬虫教程-34-分布式爬虫介绍

    Python爬虫教程-34-分布式爬虫介绍 分布式爬虫在实际应用中还算是多的,本篇简单介绍一下分布式爬虫 什么是分布式爬虫 分布式爬虫就是多台计算机上都安装爬虫程序,重点是联合采集.单机爬虫就是只在一 ...

  4. Stack vs Heap

    http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html Table of Contents Stack vs Heap The Stac ...

  5. 上传附件(图片base64)封装方法

    上传附件(图片base64)封装方法 php 上传附件,base64 项目中封装的接口: public function error($msg){ header("Content-type: ...

  6. 文本处理三剑客之 Sed ——一般编辑命令

    sed简介 sed (stream editor for filtering and transforming text) 是Linux上的文本处理三剑客之一,另外两个是grep和awk. sed又称 ...

  7. Java日志系统

    前言 各组件之间的关系: slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实 ...

  8. February 21 2017 Week 8 Tuesday

    To make each day count. 让每一天都物有所值. We always want to make our life meaningful, however, the acutal f ...

  9. boost::intrusive_ptr原理介绍

    boost::intrusive_ptr一种“侵入式”的引用计数指针,它实际并不提供引用计数功能,而是要求被存储的对象自己实现引用计数功能,并提供intrusive_ptr_add_ref和intru ...

  10. some language grammars

    ANSI C grammar Python grammar 怎么识别LL(1) LR(0) SLR(1) 等文法,一个不错的解答. http://stackoverflow.com/questions ...