什么是安全控件和安全控件如何安全这不是本文要讨论的范围。
本文只讲述如何在网页里嵌入windows edit control 控件。
PS:关于安全控件的安全:
1.防止数据被抓包的方法:
- 用驱动截获键盘事件.
- 模拟键盘事件发送垃圾数据.
2.保证被抓包的数据安全的方法:
- 进行数据加密,比如用安全证书进行加密(会被破解??,好!用另一个方法:推卸责任给安全证书)
3.传输安全:采用SSL进行通讯。
以上3点的实现请参见书籍《下辈子》作者:DLive
我们将用Firefox提供的NPapi SDK编写插件。
整个插件的关键点如下:
- 内嵌对话框的属性设置。
- 对话框的创建。
- windows的消息循环。
整个过程如下:
1.创建空DLL项目命名为npsafeinput
www.ctrip.com
2.从NPAPI SDK (版本1.92)提取必要的文件到项目文件内,并添加到项目里
npapi.h
np_entry.cpp
npn_gate.cpp
npruntime.h
nptypes.h
从官方的例子中提取两个文件
plugin.h
plugin.cpp
3.设置项目的属性
character set 设为:multi-byte
output file设为:Firefox 的plugins 目录(方便调试)
4.给项目添加vertion。
记得更改blockHeader为:040904e4
添加MIMEType: application/npsafeinput
5.添加导出接口
先添加npsafeinput.def
文件内容如下:
LIBRARY "npsafeinput" EXPORTS NP_GetEntryPoints @1 NP_Initialize @2 NP_Shutdown @3
OK! 烦琐的东西已告一段落,下面进入主题
关键代码用红色显示。
6.添加windows对话框。
打开属性面板设置他的属性如下:
Broder:None, //为什么就不说了
Style:Child, //这关系到他在页面中的位置
Visble:True, //..
ID:IDD_INPUT
7.向对话框中添加edit control 并设置属性:
ID:IDC_INPUT
Passrord:true //根据自己需要
8.编写对话框类
//DLDialog.h (略)
//DLDialog.cpp 关键内容如下
bool DLDialog::create(HINSTANCE hlnstance,LPCTSTR lpTemplate,HWND hWndParent) { hWnd=CreateDialog(hlnstance,lpTemplate,hWndParent,(DLGPROC)DlgProc); if(!hWnd){ return false; } return true; } bool DLDialog::show() { ShowWindow(hWnd, SW_SHOW); return true; } INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: break; case WM_SIZE:{ RECT rc; GetClientRect(hDlg,&rc); HWND pitem=GetDlgItem(hDlg,IDC_INPUT); SetWindowPos(pitem,HWND_TOPMOST,0,0,rc.right,rc.bottom,SWP_NOZORDER|SWP_NOMOVE); //控制输入控件随窗口的改变而改变大小 } } return false; //不要使用DefWindowProc 上默认处理消息。这样会让你的程度提前去世
9.为Cplugin类添加一些成员变量
DLDialog *cinput; //对话框类指针
bool createInput(); //导出接口
int m_width; //安全控件的宽高
int m_height;
10.在插件的消息循环中把消息也传给对话框:不然会导致一些异常情况发生。比如输入法的切换无效。
static LRESULT CALLBACK PluginWinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { ....... CPlugin * p = (CPlugin *)GetWindowLongPtr(hWnd, GWLP_USERDATA); if(p->cinput!=NULL) SendMessage(p->cinput->hWnd, msg, wParam, lParam); //向对话框传输消息 return DefWindowProc(hWnd, msg, wParam, lParam); }
11. 在插件创建的时候读取要设置的宽高
NPError NPP_New(NPMIMEType pluginType,NPP instance, uint16_t mode, int16_t argc,char* argn[],char* argv[],NPSavedData* saved) { ........... for(int i=0;i<argc;i++) { if(strcmp(argn[i],"width")==0){ //读取宽 int tmp=atoi(argv[i]); pPlugin->m_width=tmp; } else if(strcmp(argn[i],"height")==0){ //读取高 int tmp=atoi(argv[i]); pPlugin->m_height=tmp; } } ........ }
12.调用接口函数:
bool CPlugin::createInput() { if(!cinput){ cinput=new DLDialog(); cinput->create(GetModuleHandle("npsafeinput.dll"),MAKEINTRESOURCE(IDD_IINPUT),this->m_hWnd); //创建对话框注意GetModuleHandle("npsafeinput.dll") 不然对话框显示不了。 } cinput->show(); if(!SetWindowPos(cinput->hWnd,HWND_TOPMOST,100,0,m_width,m_height,SWP_NOZORDER|SWP_NOMOVE)) MessageBox(NULL,"error","error",0); return true; }
13.如何导出接口(略)
14.网页代码 注意设置宽高
<embed id="objinput" type="application/npsafeinput" width=300 height=25 ><br> <script> var embed1 = document.getElementById('objinput'); function ctrip(){ embed1.createInput(); } </script> <br> <input type=button value="携程 demo" onclick='ctrip();'>
15最终结果如下:
OK 现在整个demo已经完成了。该demo适用于支持NPAPI的浏览器。IE靠边站。
整个代码写得很粗糙。目的只是讲述一个过程。
DEMO下载地址
有什么错误的地方请指出,多谢多谢
本文作者:DLive 转载请注明来自:携程UED
相关推荐
我们都知道通过自定义协议可以从网页启动本地exe程序。但是,当本地没有安装软件时,怎么才能弹出提示,提醒客户安装软件...本实例利用C++编写OCX控件,实现安全接口(没哟证书),网页编写Javascript检测控件是否注册。
360安全卫士界面控件,包含窗体、进度条和制表控件。
去掉IE提示:internet explorer 已限制此网页运行脚本或Activex控件
vb6.0 Activex控件制作实例 vb6.0本身就带了打包工具“Package & Deployment 向导”,根据打包向导一步步做就可以,但是要注意的是“安全性设置”中要全选“是”,否则无法在网页中显示控件。
控件名为ImageCapOnWeb.cab,用jsp实现,后台接收图片也是jsp实现... 如果无法加载控件时,请把IE安全级别调低。 IE已测试通过,FF不支持,其他没测。 如果需要flash版,请转http://download.csdn.net/source/3511619
工商银行安全控件 帮助你安全的浏览工商银行的网页,安全放心
对于商业授权用户,他们以完全自己进行操作升级和安全维护,我们制定了多种授权方式供广大用户选择。 内含C#和VB.net两个版本的演示 主要特点: 跨浏览器、跨平台的所见即所得网页编辑器 界面简洁加载速度快 ...
网页文件上传控件,支持4G以上超大文件传输,随时停止,支持断点续传功能,支持用户自制界面。 与您的网页系统进行无缝整合,使您的系统可自如地上传文件,并能及时获取与上传文件相关的各种信息。控件提供各种...
MFC ActiveX控件未标记为“安全脚本”和“安全初始化”。当控件在Internet Explorer中运行且安全级别设置为中或高时,这一点就变得很明显。在这些模式中的任何一种模式下,都可能会显示警告,表明控件的数据不安全,...
写卡器的OCX控件 1. 需要注册(reg.bat),CardX.ocx文件不要删掉,否则找不到路径,最好放到系统盘里 2. 读卡器需要安装驱动,由于读卡器型号可能不一致,不统一发了 3. windows的smartCard服务要确定是启动状态 4....
这是大华视频控件,测试可在IE浏览器下正常使用。需要安装,设置安全权限 这是大华视频控件,测试可在IE浏览器下正常使用。需要安装,设置安全权限
市场上贴牌代工的高拍仪软件大部分是直接调用控件来实现高拍仪的控制功能,如“德易拍”“光捷”“吉星”“创合”“中晶”高拍仪等,软件安全性差,容易复制,存在安全漏洞。单位客户使用时可能会遭遇信息安全泄露的...
NTKO附件管理控件(多文件上传下载在线编辑扫描控件)是拥有完全独立知识产权的多附件上传控件.使用NTKO附件管理控件[多文件上传控件],能够在浏览器中启动原始文件对应的应用程序,对图像文件,OFFICE文件,文本文件,...
国际权威认证 软件经过权威机构安全数字签名认证,通过多种环境及杀毒软件测试,可安全运行。 运行环境要求: 客户端操作系统:WindowsXP/2003/2008/Vista/Win7,支持32位及64位操作系统 使用支持ActiveX功能的...
开发安全标记的MFC_ActiveX_控件及在IIS网页中使用和发布
使用WebBrowser控件时,在打开https安全链接时,可能会弹出"安全警报"(Security Alert)窗口让用户确认.用户只有点击"是(&Y)"才能正常打开网页.这是多余操作.解决方法:定时监视是否有窗口弹出,如果有,获取窗口句柄,再...
国际权威认证 软件经过权威机构安全数字签名认证,通过多种环境及杀毒软件测试,可安全运行。 运行环境要求: 客户端操作系统:WindowsXP/2003/2008/Vista/Win7,支持32位及64位操作系统 使用支持ActiveX功能的...
IDCardWeb针对这一需求,通过在网页中嵌入控件,实现准确、快速、安全、防篡改地采集身份证信息。居民二代身份证的姓名中可能含有的生僻字使用的是专用编码和字库,在使用通用字库的计算机中是不能显示的,IDCardWeb...
淘宝安全控件填密码易语言源码系统结构:递归寻找子窗口,发送消息_,寻找子窗口_, ======窗口程序集1 || ||------_按钮1_被单击 || ||------递归寻找子窗口 || || ======调用的Dll || ||---[dll]------发
Js 版基于jquery插件的清新漂亮软键盘,在对安全性要求较高的网页上,软键盘的作用就突显出来了,它可以有效防止键盘信息被截获,确保用户提交的数据是安全的。既然对安全性要求较高,那么保持兼容性良好、运行稳定...