数据防护总结(PC)

简介: 数据防护总结(PC)

为什么需要数据防护?


当今如今大数据时代,数据重要不言而喻,网页和 App 作为主流的数据载体,如果其数据没有任何的保护措施,在爬虫工程师解决了一些基本的反爬如User-Agent、cookies、验证码等的防护措施之后,那么数据依旧可被轻易的获取。


数据防护主要体现在何处?


数据防护可简略的划分为请求防护、数据内容防护、验证码


请求防护


  • User-Agent


  • Cookie


  • 签名验证


  • 握手验证


  • 协议


  • 。。。


数据内容防护


  • CSS字体偏移


  • SVG字体映射


  • 图片数据


  • 。。。


验证码


个人总结为以下几种类型,具体体现不在过多赘述。(注,几者之间无明显的分割标准,在此以侧重点划分)


  • 识别点选或输入型


  • 滑轨、滑块型


  • 短信或语音验证型



实现这一切的一切,这些究竟是基于什么实现的?这一切绝可能是凭空出现!!!

其实无论是ajax,User-Agent、还是Cookie等等大部分都是基于Javascript实现。而且由于JavaScript在客户端中为完全透明,用户可以随意的查看与调试,这无异于代码裸奔。虽然以上的反爬虫虽然不错,但如果仔细分析的,这难度也仅是“工作量”的问题。


Javascript防护分类


完全透明的JS代码,虽然可以有效的防止。但这还不够,其根本原因还是JavaScript为明文。而这一切的一切都是“治标不治本”,虽然可以但还不够。也正因为对JavaScript的各种防护,所以才让这些加密“动”起来,无法轻易的分析。对JavaScript“加密”可分为如下几种大类


代码压缩


JavaScript 压缩是指去除 JavaScript 代码中的不必要的空格、换行等内容,或者将一些可能公用的代码进行处理实现共享,最后输出的结果都被压缩为几行内容,代码可读性变差,提高分析难度同时也能提高网站加载速度。


整体来说,压缩技术只能在很小的程度上起到防护作用,要想真正提高防护效果还得依靠混淆与加密技术。


代码混淆


代码混淆是增加分析难度而牺牲部分性能的一种方案,此方案大部分是体现在通过逻辑转换换等方式将代码转化为难以分析的代码。难以分析是混淆的目的,等价转换是需要确保混淆前后的代码需不影响运行的功能。对于混淆可以又分为如下四种:布局混淆、数据混淆、控制混淆、预防混淆


布局混淆


布局混淆指在源代码中删除原有无用代码,处理常量名、变量名函数名等标识符,加对于代码的阅读与分析。


无用代码:注释、调试信息、缩进、换行、无用函数与数据等


处理常量名、变量名函数名等标识符:


  • 标识重命名:将原有代码重命名为无具体意义的字符,例如 将name 重命名为a

注意点:


  • 作用域内标识符碰撞情况


小结


布局混淆并不会影响执行的过程、内存开销,甚至代码体积反而减少了。


数据混淆


JS拥有常见的7种数据类型,number、string、boolean、unfined、null、Object


数字混淆


数据混淆有常见:进制转换、数字分治、其他


  • 进制转换


将十进制转化为二进制、八进制、十六进制等,从而达到“混淆”的目的


  • 数学分治


简而言之就是将数拆开,例如 2 = 1 + 1,辅以数学公式等


  • 其他


重新赋值等


字符串混淆


字符串混淆常见的有编码转换、加密。常见的有hash、base64、md5等


boolean


我们都知道Boolean值为True、False。根据对boolean的处理,变成难以显示阅读的代码。例如![] = False, !![] = True.


控制混淆


控制混淆是指对程序的控制流进行转换变化,常见的方式有插入僵尸代码、控制流平坦化


插入僵尸代码:插入僵尸代码即插入无用的代码,增强调试难度


控制流平坦化:控制流平坦化,将原本的的执行流程平坦化。具体可自行搜索


预防混淆


主要体现在 提高反混淆的难度或检测现有混淆器中的漏洞设计


代码混淆总结


万变不离其宗,无论是代码压缩、代码混淆都离不开一个宗旨,在不改变原有的结果情况下对代码(这里指JS)进行处理。处理的方式包含但不限于,等值转换、运算分割。


设备指纹防护


设备指纹通过收集客户端设备的特征信息对用户与“机器人”进行甄别。web设备指纹主要包含:


浏览器端环境检测


浏览器设别标识


特征识别Hook


JS特征识别


做爬虫的朋友一定使用过NodeJs,这个工具。也时常借用与Nodejs来模拟JS,但Nodejs的api和指纹浏览器有不一样。如果服务端获取到客户端,那么就可以对指纹不一致的机器人,进行防范。


正如你我所知的那般,知道的越多,不知道的越多。


推荐阅读与了解


风控要略:互联网业务反欺诈之路


Jsfuck(github):https://github.com/aemkei/jsfuck


基于控制混淆和布局混淆的代码混淆系统-王岩(论文)


目录
相关文章
|
5月前
|
监控 安全 数据挖掘
网络游戏服务器如何有效防护DDoS与CC攻击
随着网络游戏行业的蓬勃发展,其背后的服务器架构日益复杂,同时也面临着前所未有的网络安全威胁。其中,分布式拒绝服务(DDoS)和CC(Challenge Collapsar,一种针对网页的攻击方式)攻击尤为突出,它们通过大量伪造请求或恶意流量,使服务器资源耗尽,导致服务中断或响应缓慢。因此,保障网络游戏服务器的安全,有效防护DDoS与CC攻击,已成为游戏行业亟待解决的问题。
|
2月前
|
安全 网络安全 数据安全/隐私保护
WAF防护功能的实现方案
WAF防护功能的实现方案
42 0
|
3月前
|
监控 网络协议 数据挖掘
阿里云国际云解析DNS如何开启/关闭流量分析?
阿里云国际云解析DNS如何开启/关闭流量分析?
|
7月前
|
生物认证 Python
WAF攻防-信息收集&识别&被动探针&代理池&仿指纹&白名单
WAF攻防-信息收集&识别&被动探针&代理池&仿指纹&白名单
|
8月前
|
安全 网络协议 5G
华为WLAN 配置攻击检测功能示例
华为WLAN 配置攻击检测功能示例
|
Web App开发 监控 安全
Web服务器如何防CC攻击?
CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些。这种攻击你见不到虚假IP,见不到特别大的异常流量,但造成服务器无法进行正常连接,听说一条ADSL足以搞掂一台高性能的Web服务器。
1499 1
|
云安全 安全 druid
Apache Log4j2 丨阿里云「流量+应用+主机」三重检测防护指南
2021年12月10日,国家信息安全漏洞共享平台(CNVD)收录了Apache Log4j2远程代码执行漏洞(CNVD-2021-95914),此漏洞是一个基于Java的日志记录工具,为Log4j的升级。作为目前最优秀的Java日志框架之一,被大量用于业务系统开发。
912 0
Apache Log4j2 丨阿里云「流量+应用+主机」三重检测防护指南
|
数据采集 监控 搜索推荐
盘点技术史:流量运营(PC 时代)
流量分析只比互联网诞生晚几年,作为一个生态,互联网需要有人提供服务,同时也需要有人消费服务,而在互联网上经营服务跟在线下经营五金店一样,如果想要成功,需要时刻关注来访问的顾客的情况:今天有多少人来消费?有多少人来了但是没有购买?我的顾客有一些什么特点?为什么今天的销售额比昨天少了很多?
879 0
盘点技术史:流量运营(PC 时代)
|
安全 应用服务中间件 nginx
数十万网站被利用发起CC攻击
——论pingback之卷土重来 云盾WAF团队
5995 0