26键 or 九宫格?不论哪个都不耽误黑客们窃取你的信息!

news2024/12/24 3:08:14

我妈找我说,可以邮寄杨梅了。我二话不说,直接开始给她我的邮寄地址。快速输入的地址让我想到一个问题,现在的输入法是不是知道的太多了?

我只要打出“浙江省杭州市”,联想出来的就是我所在的市区和街道,下面就是我所在的小区…虽然足够便利,但是如果键盘被黑灰产劫持,那么,也足够危险。

image.png

而现在市面上基于键盘输入数据的各类信息窃取攻击非常普遍。包括移动金融、电子商务、第三方支付、网络游戏、社交软件等App都存在各类用户信息泄露的环节。大量诸如账号、密码、手机号码、信用卡号、银行卡号、身份证件号码、家庭住址信息、公司地址信息、家庭成员信息、个人私密信息、商业信息等敏感数据被通过App键盘录入移动互联网中。黑客们通过反编译这些流行应用,将键盘钩子(监控程序)捆绑嵌入其中,以监控、窃取用户通过键盘输入的各项数据。

一些常见的键盘攻击行为

一些流行的键盘输入攻击包括:

  • 输入数据监听攻击
  • 键盘截屏攻击
  • 破解加密算法
  • 窃取输入数据
  • 其他攻击等等
  • 键盘劫持攻击
  • 输入数据篡改攻击
  • 未加密前篡改
  • 来自系统底层的内存dump攻击

针对一些涉及到交易的App,通过对键盘的攻击,可以获得用户账户、证件、密码、银行卡信息、转账信息以及有效联系方式等个人重要信息。 以移动金融、手机网游、社交、移动购物为例,App键盘攻击将会带来以下风险:

  • 银行卡账户密码、交易金额、交易信息、交易凭证等被窃取从而造成财产损失
  • 被监听游戏帐号、密码,从而造成虚拟财产损失
  • 被窃取社交应用账号、密码,被利用社交关系网络进行精准诈骗
  • 被窃取用户资料或商业机密并被售卖
  • 交易金额被篡改

基于上述问题,我们要如何防范?

产品说明

  • 安全键盘SDK: 是一款具有防止被恶意输入,数据被恶意篡改,真实数据被监听的安全键盘。安全键盘给予你从底层、启动前、输入时、输入后等多个维度进行输入数据保护。
  • 作用领域:金融行业,银行行业等敏感数据输入场景。

底层技术

  • 密码在内存中全程加密存储 采用高强度的组合加密算法和机制,对安全键盘输入的信息在全流程实施加密,不留下风险空当。
  • 全程安全检测保护 排除非法环境输入(root,越狱,调试模式等),并提示用户
  • 防截屏攻击 对截屏攻击进行防御,不回显输入信息。
  • 防止从底层获取密码 通过随机布局键盘,防止被底层分析输入节点进而获取密码。
  • 防止底层dump内存读取密码 对于底层的内存dump做了有效防护,防止被dump出内存密码的明文拷贝等风险。(android)
  • 防输入日志泄露 对输入输出的日志进行保护,防止输出信息打印出明文密码帐户信息。(android)
  • 密码so文件加壳保护 在so文件中保存密钥,并对so文件高强度加壳。(android)

安全键盘接入

Android接入

459feac2-5d43-4d86-bba6-2458b2b838d1.png

一、环境要求

条目说明
开发目标Android 4.0+
开发环境Android Studio 3.0.1 或者 Eclipse + ADT
CPU架构ARM 或者 x86
SDK三方依赖

二、 集成SDK

2.1 获取SDK
  1. 访问技术官网,注册账号
  2. 进入安全键盘SDK后台
  3. 新增App,填写相关信息
  4. 下载对应平台SDK
2.2 SDK文件结构
  • SDK目录结构

    • aar - dx-keyboard-x.x.x.aar 包括java代码,资源等
    • so - 支持4种abi平台的so,键盘native 核心代码
2.3 Android Studio 集成

点击下载Demo

2.3.1 Android Studio导入aar, so
  • libs下的aarso导入到项目对应的libs目录下

    android-dx-keyboard-as.png

2.3.2 build.gradle 配置
android{
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
    
    repositories{
        flatDir{
            dirs 'libs'
        }
    }
}


dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation (name:'dx-keyboard-x.x.x', ext:'aar')
}

三、API使用

打开安全键盘有以下三种方式:

3.1 API方式调用
3.1.1 初始化
  • 建议在ActivityonCreate下调用
DXKeyboardManager.getInstance().init(context);
3.1.2 设置输入监听器
DXKeyboardManager.getInstance().setListener(new IDXKeyboardListener() {
            @Override
            public void onTextChange(CharSequence str) {
            }

            @Override
            public void onShow() {
            }

            @Override
            public void onHide() {
            }
  
  
            @Override
            public void onClickFinish() {
            }
  
            @Override
            public void onKbHeightChange(int height) {
            }
        });
3.1.3 设置Dialog不被键盘遮盖
DXKeyboardManager.getInstance().setAdjustDialogView(dialog);
3.1.4 显示键盘
  
 /**
  * 显示键盘选项
  */
  DXKeyboardOption option = new DXKeyboardOption();
  // 自定义“完成”按钮(只对数字键盘生效)。通过 onClickFinish 回调自行处理 
  option.setFinishBtn(true, "登录");
  // 指定纯数字键盘
  option.setKbType(DXKeyboardType.NUMBER);
  // 开启随机键
  option.setRandomKey(true);
  
  
/**
  * 显示键盘
  * activity 上下文
  * option 显示选项
  */
 DXKeyboardManager.getInstance().show(MainActivity.this, option);
3.1.5 隐藏键盘
DXKeyboardManager.getInstance().hide();
3.1.6 销毁键盘
  • 建议在ActivityonDestroy下调用
DXKeyboardManager.getInstance().destroy();

3.2 DXSafeEditView方式调用

  • DXSafeEditView 为继承系统 EditText 的文本输入控件
  • 支持直接在xml上初始化,其中inputType的值为numberphone时,默认弹出数字键盘
<com.dingxiang.mobile.keyboard.api.view.DXSafeEditView
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:focusableInTouchMode="false"
     android:inputType="textPassword" />
  • DXSafeEditView 获取真实数据
DXSafeEditView.getEditString();

3.3 Webview方式调用

  • 支持H5的输入控件唤起顶象安全键盘
  • Java代码段调用
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);

//顶象Javascript 对象初始化
DXJavascriptBridge jsInterface = new DXJavascriptBridge(mContext, mWebView);
mWebView.addJavascriptInterface(jsInterface, "DXobject");
  • Html调用
<input type="text" id="dx_id" name="yourpw" value="" readonly onfocus="requreFocus(this)" onblur="requestBlur(this)"/>
  • Js相关交互代码
<!—获取固定方法 -->
function requreFocus(e){
    e.blur();
    window.DXobject.requreFocus(e.name , e.type , e.id);
}

<!—获取固定方法 -->
function requestBlur(e){
    window.DXobject.requestBlur(e.name , e.type , e.id);
}

<!—获取固定方法 -->
function setText(name , str){
window.document.getElementsByName(name)[0].value = str;
}

<!—获取真正的数值 -->
function getValue() {
    var e =  window.document.getElementById("dx_id");
    var _name = e.name;
    var _type = e.type;
    var _id = e.id;
    var value =  window.DXobject.getValue(_name , _type , _id);
    alert(value);
}

四、混淆配置

-dontwarn com.dingxiang.mobile.**
-dontwarn *.com.dingxiang.mobile.**
-dontwarn *.com.mobile.strenc.**
-keep class com.dingxiang.mobile.keyboard.**{*;}
-keep class *.com.dingxiang.mobile.**{*;}
-keep class com.security.inner.**{*;}
-keep class *.com.mobile.strenc.**{*;}
-keep class android.support.v4.content.LocalBroadcastManager{*;}

iOS接入

一、环境需求

条目说明
兼容平台iOS 9 .0+
开发环境XCode 4.0 +
CPU架构armv7, arm64, i386, x86_64
SDK依赖libz, libresolv, libc++ , SystemConfiguration.framework

二、 集成SDK

2.1 获取SDK
  1. 访问技术官网,注册账号
  2. 登录控制台,访问“全流程端防控->安全键盘SDK”模块
  3. 新增App,填写相关信息
  4. 下载对应平台SDK
2.2 SDK文件结构

顶象安全键盘 iOS SDK ,解压得以下几个文件

  • DXSafeKeyboard_iOS_xxxxx_debug.zip 安全键盘debug 授权集成库
  • DXSafeKeyboard_iOS_xxxxx_release.zip 安全键盘release 授权集成库

例如图:

7DD7A64B-7967-4F56-B01A-E96332743A11.png

  • 解压DXSafeKeyboard_iOS_xxxxx_xxx.zip 文件,得到以下文件

    • DXSafeKeyboard 文件夹

      • DXSafeKeyboardFramework.framework 已授权framework静态库
      • DXKeyboard.bundle 资源文件
    • other_file 授权描述文件

点击下载Demo

2.3 xcode集成
  • DXSafeKeyboard 文件夹拖入工程根目录,勾选 Copy iterms if neededCreate groups , 并在 Add to targets 中按需勾选target
  • 在项目中添加Linking配置,选择Target -> Build Settings,在Other Linker Flags里添加-ObjC配置
  • Build PhasesLink Binary With Libraries里添加SystemConfiguration.frameworklibc++.tbd

三、初始化

假设在 ViewController 中添加安全键盘,首先引入头文件

#import "DXSafeKeyboard.h"

然后实现 DXSafeKeyboardDelegate 协议中的 keyboard:buttonClicked: 方法,以接收验证结果回调

@interface ViewController () <DXSafeKeyboardDelegate>
  
@end
  
@implementation ViewController
- (void)keyboard:(DXSafeKeyboard *)keyboard buttonClicked:(DXKeyboardEvent *)action{
    //具体实现壳查看demo
}

@end

最后安全键盘组件,需要传入 DXSafeKeyboardType,设置 delegate

DXSafeKeyboard *letterKeyboard = [[DXSafeKeyboard alloc] initWithType:DXSafeKeyboardTypeLetter];
letterKeyboard.delegate = self;
letterTextField.inputView = letterKeyboard;

四、接口说明

@interface DXSafeKeyboard : UIView

//初始化键盘,三种键盘可选:
//	字幕键盘(DXSafeKeyboardTypeLetter)
//	带操作键数字键盘(DXSafeKeyboardTypeNumberWithEnter)
//	纯数字键盘(DXSafeKeyboardTypeOnlyNumber)
- (instancetype)initWithType:(DXSafeKeyboardType)type;

//键盘代理,用于接收按钮回调
@property (nonatomic, weak) id<DXSafeKeyboardDelegate> delegate;

//enterButton文字
@property (nonatomic, strong) NSString *enterButtonTitle;

//enterButton颜色
@property (nonatomic, strong) UIColor *enterButtonColor;

//numberpad按下颜色
@property (nonatomic, strong) UIColor *numberPadHlightColor;

// 展示键盘(无输入焦点)
-(void) showKeyboard;
// 隐藏键盘
-(void) hiddenKeyboard;
  
@end

以上。

结语

目前金融银行等App一般都会使用乱码的键盘去防劫持,但是在技术发展的同时,黑灰产目前已经通过深度学习等方式找到破解方式,所以我们更需要“魔高一尺道高一丈”,去超前与黑灰产对抗。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【git切换分支/tag】git stash保存暂不提交的更改

目录 问题git stash使用方法git stash pop 还原修改 git stash使用、修改指定tag的代码 其他git指令 问题 情景&#xff1a;分支1上开发新功能&#xff0c;临时切换到其他分支或tag上修改bug。 1、直接切换&#xff1a;如果没有冲突&#xff0c;分支1的修改会带到要切换的分支…

Python-深入不出的字符串

深入不出的字符串 字符串是由独立字符组成的一个序列&#xff0c;通常包含在单引号&#xff08;‘’&#xff09;双引号 &#xff08;“”&#xff09;或者三引号之中&#xff08;‘’’ ‘’或"“” “”"&#xff0c;两者一样&#xff09;&#xff0c;比如下面几种…

感觉被榨干了,被美团拷打一小时...

普通本科毕业后&#xff0c;进了一家互联网公司&#xff0c;这几年里不断在积累经验&#xff0c;最终选择跳到美团&#xff0c;涨薪了50%&#xff0c;下面分享一下我个人的面经和一些心得建议。 面经 面团一面 自我介绍专业技能一条条核对下来 有软件测试流程、用例设计方法…

Layui项目实战

使用语言&#xff1a;C#&#xff0c;Js&#xff0c;Html 使用框架&#xff1a;MVC&#xff0c;Layui 使用插件&#xff1a;JQuery&#xff0c;Layui 一.Layui父窗体前端代码&#xff1a; 1.Html代码&#xff1a; <div class"layui-col-md12" style"paddin…

如今做泛娱乐出海,你需要融云《社交泛娱乐出海作战地图》

出海需要的从来都不是上头&#xff0c;而是专业。关注【融云全球互联网通信云】了解更多 星期四的下午&#xff0c;笔者收到了一份特殊的“投喂”——一份详实到出乎意料的《社交泛娱乐出海作战地图》&#xff08;下称《作战地图》&#xff09;。 内容上&#xff0c;它覆盖了从…

英语、数学不精,还可以选择IT行业吗?

临近毕业季择校季&#xff0c;又有一群小伙伴面临着无法确定专业选择方向的难题。 就IT行业来说&#xff0c;有很多同学会有这样的疑问&#xff1a; 对计算机专业的不是十分了解&#xff0c;能学吗&#xff1f; 之前数学不太好&#xff0c;怎么学编程&#xff1f; 学编程对…

Python 接口测试之Excel表格数据操作方法封装

引言 我们在做接口测试&#xff0c;经常会用到excel去管理测试数据&#xff0c;对Excel的操作比较频繁&#xff0c;那么使用python如何操作Excel文件的读与写呢&#xff1f;由于之前讲的都是大的框框&#xff0c;没有讲这么小的模块使用&#xff0c;现在就化整为0的讲解。 读…

黑客工具软件大全

黑客工具软件大全100套 给大家准备了全套网络安全梓料&#xff0c;有web安全&#xff0c;还有渗透测试等等内容&#xff0c;还包含电子书、面试题、pdf文档、视频以及相关的网络安全笔记 &#x1f447;&#x1f447;&#x1f447; 《黑客&网络安全入门&进阶学习包》 &a…

深度学习笔记之Seq2seq(三)注意力机制的执行过程

深度学习笔记之Seq2seq——注意力机制的执行过程 引言回顾&#xff1a;经典 Seq2seq \text{Seq2seq} Seq2seq模型中 Context \text{Context} Context向量的缺陷注意力机制的动机 Seq2seq \text{Seq2seq} Seq2seq中的 Attention \text{Attention} Attention结构注意力模型的数学…

chatgpt赋能python:Python如何合并集合?

Python如何合并集合&#xff1f; 在Python编程中&#xff0c;合并多个集合是一项常见的任务。集合合并在数据处理和分析领域中极为常见&#xff0c;例如在合并用户数据时&#xff0c;需要将多个相同字段的集合合并为一个完整的集合。 本文将介绍如何在Python中合并集合&#…

【语音之家】AI产业沙龙 —— 解读火山语音团队在国际顶会ACL2023的创新突破

由CCF语音对话与听觉专委会 、中国人工智能产业发展联盟&#xff08;AIIA&#xff09;评估组、火山语音、语音之家、希尔贝壳共同主办的【语音之家】AI产业沙龙——解读火山语音团队在国际顶会ACL2023的创新突破&#xff0c;将于2023年6月14日19:00-20:20线上直播。 沙龙简介 …

JVM中方法区、永久代、元空间详解以及关系?

首先我们需要先复习一下jvm的大致内存图&#xff0c;如下&#xff1a; 哦~ &#xff0c;想起来了&#xff0c;原来方法区属于jvm的运行时数据区&#xff0c;且作用就是存储类信息、方法信息、常量池信息等静态数据。 &#xff08;补充一下&#xff1a;运行时数据区中的红色是指…

​跨部门网络搭建,核心在这30行里

大家好&#xff0c;我的网工朋友。 在企业网络中&#xff0c;想要实现跨部门的VLAN互联互通&#xff0c;其实有很多方式。 你可以通过子接口实现&#xff0c;也可以通过VLAN-Interface实现。但在实际工作中&#xff0c;很多网工朋友&#xff0c;遇到这种情况&#xff0c;很容…

【Selenium2+python】自动化unittest生成测试报告

前言 批量执行完用例后&#xff0c;生成的测试报告是文本形式的&#xff0c;不够直观&#xff0c;为了更好的展示测试报告&#xff0c;最好是生成HTML格式的。 unittest里面是不能生成html格式报告的&#xff0c;需要导入一个第三方的模块&#xff1a;HTMLTestRunner 一、导…

java小技能: 使用response方式下载txt文件(使用response的方式进行文件的传输)

文章目录 引言I 后端代码1.1 思路1.2 封装1.3 用法1.4 防止文件名称中文乱码1.5 指示哪些报头可以公开 Access-Control-Expose-Headers1.6 创建目录II 前端下载文件引言 项目需求:进行txt文件的下载 其他思路:写好文件在下载的方式 本文思路:使用response的方式进行文件的传…

【实战】minigpt4的体验和微调

MiniGPT-4 https://github.com/vision-cair/minigpt-4 1 环境配置 1.1 安装环境 git lfs install //如果报错 &#xff1a;git: lfs is not a git command. See git --help. //尝试使用&#xff1a; sudo apt-get install git-lfs git lfs install1.2 准备Vicuna权重 &…

树的概念和性质

文章目录 树的基本概念树的定义和术语树的遍历树的种类 二叉树二叉搜索树AVL 树红黑树 完全二叉树和满二叉树哈夫曼树 多叉树B 树及其变种B 树B 树和 B* 树 目录 树的基本概念 树的定义和术语 树是由零个或多个结点组成的具有层级关系的数据结构。 当树的结点数量等于零时&a…

暴力递归到动态规划(四)

⭐️前言⭐️ 本篇文章是从暴力递归到动态规划篇目的最后一篇文章&#xff0c;包含了几道题目还有最终的大总结&#xff0c;相信这篇文章能让各位读者对动态规划有更深一步的了解。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601…

使用大型语言模(LLM)构建系统(五):输出结果检查

今天我学习了DeepLearning.AI的 Building Systems with LLM 的在线课程&#xff0c;我想和大家一起分享一下该门课程的一些主要内容。今天我们来学习输出结果检查。输出结果检查包含以下两部分内容&#xff1a; 检查输出是否存在潜在有害内容检查输出是否基于提供的产品信息 下…

easyrecovery2023永久免费版激活密钥,手把手教您用EasyRecovery快速恢复数据

Ontrack EasyRecovery Crack Professional是一个全面的备份和恢复实用程序&#xff0c;可以从多个数据丢失事件中恢复文件&#xff0c;例如常见的意外删除、更严重的&#xff08;有时是病毒引起的&#xff09;分区或驱动器格式化&#xff0c;甚至硬盘严重损坏后的数据丢失。免费…