`
起跑线
  • 浏览: 28048 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

如何制作网页安全登录控件

 
阅读更多

 

什么是安全控件和安全控件如何安全这不是本文要讨论的范围。

本文只讲述如何在网页里嵌入windows edit control 控件。

PS:关于安全控件的安全:

1.防止数据被抓包的方法:

  • 用驱动截获键盘事件.
  • 模拟键盘事件发送垃圾数据.

2.保证被抓包的数据安全的方法:

  • 进行数据加密,比如用安全证书进行加密(会被破解??,好!用另一个方法:推卸责任给安全证书)

3.传输安全:采用SSL进行通讯。

以上3点的实现请参见书籍《下辈子》作者:DLive

我们将用Firefox提供的NPapi SDK编写插件。

 

整个插件的关键点如下:

  1. 内嵌对话框的属性设置。
  2. 对话框的创建。
  3. windows的消息循环。

整个过程如下:

1.创建空DLL项目命名为npsafeinput

设置character set

www.ctrip.com

output file

 

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

 

设置MIMEType

 

设置MIMEType

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最终结果如下:

www.ctrip.com

OK 现在整个demo已经完成了。该demo适用于支持NPAPI的浏览器。IE靠边站。

整个代码写得很粗糙。目的只是讲述一个过程。
DEMO下载地址

有什么错误的地方请指出,多谢多谢

 

本文作者:DLive 转载请注明来自:携程UED

 

分享到:
评论

相关推荐

    网页自动下载控件制作工具

    网页自动下载控件制作工具是一种专门用于创建和配置网页中使用的下载控件的软件。这种工具可以帮助开发者方便地实现用户在浏览网页时能够快速、自动地下载特定的文件或资源,提升用户体验。以下是对该工具及其相关...

    NPAPI 安全输入控件

    安全输入控件在网络安全领域扮演着重要角色,它们主要用于保护用户的数据输入过程,防止键盘记录器、屏幕截取等恶意软件的攻击。基于NPAPI开发的安全输入控件可以在多种浏览器环境下工作,如Firefox、Chrome、Opera...

    网页中显示带控件的ActiveX控件

    ActiveX控件是微软在Internet Explorer浏览器中引入的一种技术,用于增强网页的交互性和功能。在Web开发的早期,ActiveX被广泛应用于提供多媒体内容、软件下载、在线应用程序以及各种定制的用户界面元素。本文将深入...

    去掉IE提示:internet explorer 已限制此网页运行脚本或Activex控件

    在使用Internet Explorer浏览器访问某些包含脚本或ActiveX控件的网页时,用户可能会遇到一个警告提示:“Internet Explorer已限制此网页运行脚本或ActiveX控件”,这通常是为了防止潜在的安全风险而采取的一项保护...

    网页验证码控件

    综上所述,"网页验证码控件"在网页安全和用户体验之间寻找平衡,通过提供安全的验证机制,保护了网站和服务免受自动化攻击,同时也为用户提供了一个简单易用的交互界面。在开发和使用过程中,理解其工作原理和功能...

    身份证阅读器网页控件

    【身份证阅读器网页控件】是一种特殊的软件组件,主要用于网页应用程序中实现身份证信息的自动读取和识别。这种控件通常是由硬件制造...在当今信息化社会,这种控件在公共服务、信息安全和效率提升方面发挥着重要作用。

    华旭2018网页控件.rar

    综上所述,"华旭2018网页控件.rar"提供了在网页环境中实现身份证识别的全套解决方案,通过集成华旭阅读器,开发者可以轻松构建安全、高效的实名认证系统。这一技术在政府服务、金融交易、在线教育等多个领域都有广泛...

    vs制作activex控件

    以下将详细讲解如何使用VS制作ActiveX控件,并涉及制作 CAB 包、颁发证书和签名以及安装步骤。 首先,创建ActiveX控件项目: 1. 打开Visual Studio,选择“文件”&gt;“新建”&gt;“项目”。 2. 在项目模板中,找到...

    360安全卫士界面控件

    其中,界面控件是360安全卫士用户体验的重要组成部分,它决定了用户与软件交互的方式和感受。本文将深入探讨360安全卫士界面控件的相关知识点。 首先,我们要理解什么是界面控件。在软件开发中,界面控件是指用于...

    网页页面验证控件源代码

    网页页面验证控件是网页开发中的重要组成部分,主要用于在客户端对用户输入的数据进行实时检查,以确保数据的有效性和安全性。这些控件可以防止无效数据提交到服务器,减轻服务器端的压力,提升用户体验。以下是对...

    模拟点击,输入网页上的控件,获取网页上控件的内容

    总的来说,模拟点击和输入网页控件在Delphi中可以通过TWebBrowser组件或Selenium WebDriver实现,这些技术极大地提高了自动化处理网页任务的效率,但同时也需要注意相应的道德和法律问题。在编写代码时,确保理解...

    ActiveX 控件安全性demo.zip

    MFC ActiveX控件未标记为“安全脚本”和“安全初始化”。当控件在Internet Explorer中运行且安全级别设置为中或高时,这一点就变得很明显。在这些模式中的任何一种模式下,都可能会显示警告,表明控件的数据不安全,...

    网页中使用CAD控件

    在本文档中,我们详细介绍了如何在网页中集成CAD控件,并特别聚焦于CAB安装包的制作过程。这不仅适用于网页开发人员,也对那些希望在其项目中集成CAD功能的技术人员具有参考价值。 ##### 1. 控件运行所需最少文件...

    网页窗口控件

    网页窗口控件是Web开发中的一个重要组成部分,它们用于在浏览器窗口内展示内容、提供交互功能以及实现页面间的通信。在给定的文件列表中,我们可以看到一些与网页窗口控件相关的示例和资源,如HTML文件(demo.html、...

    网页向ActiveX控件传递参数(C++ 的ocx)

    在互联网的早期,ActiveX控件是微软推出的一种技术,允许网页嵌入并运行客户端的交互式组件。这些控件通常由C++编写,并以OCX(OLE Control Extension)的形式存在,可以提供丰富的用户界面和功能。在网页中,通过...

    smsx控件实现网页打印

    安装完成后,需要在浏览器的安全设置中允许运行该控件,以确保其能在网页中正常工作。 三、控件集成 在HTML或ASP.NET页面中,通过插入对象标签()或脚本(JavaScript或VBScript)来引入smsx控件。代码示例如下: ...

    ActiveX控件制作并使用网页调用

    本教程将深入探讨如何制作ActiveX控件并使用网页进行调用。 首先,我们要理解ActiveX控件是如何创建的。这通常涉及到使用Microsoft Visual Studio,特别是其中的ATL(Active Template Library)项目模板。ATL是一种...

    c# 制作active控件说明

    在C#中制作Active控件,也称为OCX控件,是一项常见的任务,特别是在开发需要在网页或桌面应用中嵌入自定义功能的场景。ActiveX控件是基于COM(组件对象模型)的技术,允许开发者创建可重用的、跨平台的控件。下面将...

    Javascript密码输入控件

    JavaScript密码输入控件是网页开发中常见的一种交互元素,它用于收集用户的安全信息,如登录密码、PIN码等。在Web应用中,正确地实现密码输入控件对于提高用户体验和保障数据安全至关重要。本文将深入探讨JavaScript...

    盗用别人的网页代码 自定义控件源码

    标题中的“盗用别人的网页代码 自定义控件源码”实际上是一个不推荐的行为,因为这涉及到知识产权和版权问题。在IT行业中,尊重他人的代码和创新是非常重要的职业道德。然而,这个话题可以转换为如何学习、理解和...

Global site tag (gtag.js) - Google Analytics