精华内容
下载资源
问答
  • 标签的分类,是理解用户标签、理解用户画像的基础。优秀的标签分类,将使得标签画像系统易于用户的使用。”本篇文章和大家简单介绍一下标签数据的分类。按照不同的分类方法,标签的分类也自然不同。...

     标签的分类,是理解用户标签、理解用户画像的基础。优秀的标签分类,将使得标签画像系统易于用户的使用。

    本篇文章和大家简单介绍一下标签数据的分类。

    按照不同的分类方法,标签的分类也自然不同。本文主要介绍几种最常规的分类方式,包括按照来源方式、按照业务场景、按照标签的数据类型等。

    01

    按照来源分类

    首先是按照标签的来源分类。主要分为以下的几类:

    (1)用户自己填写的数据生成的标签

    这部分标签是用户在注册产品或者在各个模块自行填写的信息。一般就是【性别】、【生日】、【真实姓名】、【居住地】、【身份证】等

    例如下图是联想的官网,用手机号注册成功后,进入个人信息页面,可以看到各种信息的填写。

    互联网早期,很多网站的注册比较麻烦,必填的信息项目较多,因此能拿到的数据也就多。但随着互联网红利的消失,用户的获取愈发困难,在注册阶段收集用户信息变得越来越简洁,目前绝大部分网站的收集就只保留了手机号,用手机号及验证码即可完成注册。后续则通过一些积分、优惠等方式激励大家主动填写。

    【优缺点】这部分数据用来做标签,往往是最基础的。但存在的最大的问题是标签覆盖度过低,有意愿填写的用户常常比例不过半。而且对于部分敏感信息,例如身份证、地址等,如果逼迫用户填写,用户经常会填写虚假信息。这对于后续标签画像而言,不太好用。除非是12306这种强制性的网站,对身份信息能保障。

    (2)通过统计用户行为,生成的统计标签

    这类标签指标是最多的。

    比如可以根据订单表,统计用户的订单金额;可以根据搜索表,统计用户的搜索次。

    【优缺点】这部分数据用来做标签,是比较客观的,用户的行为不会说谎。但存在的一个问题是,要对标签画像系统产生价值,需要较多的逻辑处理。例如,想给用户打一个【购买力高低】的标签,是统计最近7天的成交金额,还是最近30天的?是按照订单口径还是金额口径?是大于1万算高,还是大于1000就算高?这里都需要大量的逻辑。如果只是一个统计值,只能算是一个宽口径的半加工的标签,真正用起来的时候,存在一些障碍。

    (3)通过算法生成的标签

    算法,很万能。

    这玩意就是,很多场景不得不用。比如,想打一个【准妈妈】标签。这时,你咋办?你想尽各种逻辑,比如最近有搜索宝宝装行为的、最近有买孕妇服的……很多特征都能反映【准妈妈】的特点,但是通过简单的逻辑,是无法实现的。这个时候,就扔给算法团队吧……他们会基于大量的特征,训练模型,最后打上【准妈妈】的标签。

    【优缺点】算法标签的缺点很突出,就是费时费力,做一个标签的时间可能要一两个月,做统计标签都做了几十个了……但如果算法靠谱,效果常常也不错,对业务的价值往往也比较大。如果公司算法资源富裕,那就做吧!当然,要有业务价值哦~

    (4)通过第三方采购、积累的

    土豪的方式很简单,买!

    比如采购点身份证信息、采购点用户的征信信息等等。

    【优缺点】优点就是省事。缺点就是费钱,而且能买的标签通常都是比较通用的,一些个性化的,例如网站的访问频次等,也是不太好采购的。当然还涉及数据安全的风险。

    02


    按照数据类型分类

    按照数据类型,主要分为以下几类:

    (1)数值型标签

    刚才上文提到的【用户最近7天购买金额】、【用户近1天浏览天数】等,这些标签都是按照一定的规则统计生成的,均是数值型标签。其实本质上和指标没有太大区别。

    组成公式是:【时间范围】+【行为方式】+【统计方式】。

    下图是达摩盘标签中的部分统计标签:


    时间范围不说了,行为方式表示这个指标的含义,例如成交、搜索、点击等。统计方式是【计数】、【求和】、【最值】等

    【优缺点】按照不同的时间范围、不同的行为方式、不同的统计方式,可以组成大量的标签。数量虽多,但是价值密度很低。因此,在成熟的标签系统中,这类标签不会大量在计算,往往是用户创建了啥就用啥。优点是比较容易生成。

    (2)单值型枚举标签

    这种标签可以是用户自己填写生成的,也可以是通过数值型标签进行加工,或者算法,生成的。

    这类标签的最大特征,就是一个用户在这个标签中,只能有一个选项值。而且,和数值型标签的区别在于,单选型标签的选项值是可穷举的,是离散的。

    例如:【用户的生命周期】,用户肯定是处于【成长期】、【成熟期】、【衰退期】、【沉睡期】其中的一个,不可能属于两个或者多个。

    例如:【性别】

    (3)多值型枚举标签

    和单选型标签的区别就在于,一个用户可以有多个值。

    同样,复选型标签也是离散值,选项是可穷举的。

    例如:【用户的收货城市】,用户可以有多个城市

    (4)文本型标签

    这类标签最大的特征,是不连续、且不可穷举。

    例如,【用户常用热搜词】,每个用户都可以有自己的常用热搜词,但热搜词的数量是巨大的,不能像单选型标签或者复选型标签那样,几个、甚至最多几十个选项,就能覆盖所有。


    为啥要进行这个分类呢?

    其实主要是在标签系统中,用标签筛选人群的时候有用。不同数据类型的标签,在前端的交互是一定要有区分的。这个后续详细展开。

    03


    按照业务场景分类

    这种分类方式,根据各自业务的不同,就见仁见智了。

    这个分类,主要是用于标签系统的标签管理,按照业务方式进行组织标签类别,有助于用户的便捷使用。

    下面是阿里达摩盘的标签分类,仅供参考

    以下是某司内部的标签分类:

    以上。

    
    
    
    ●解一道反常的Pandas题●12000+字超详细 SQL 语法速成!
    后台回复“入群”即可加入小z干货交流群
    
    展开全文
  • 网络安全工作目标包括信息机密性、信息完整性、服务可用性以及可审查性;而网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行...

    网络安全工作目标包括信息机密性、信息完整性、服务可用性以及可审查性;而网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

    4f51156255c9fcf234e221f3c9b1e407.png

    网络安全工作的目标包括:1、信息机密性;2、信息完整性;3、服务可用性;4、可审查性。

    相关介绍:

    网络安全(Cyber Security)是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

    2020年4月27日,国家互联网信息办公室、国家发展和改革委员会、工业和信息化部、公安部、国家安全部、财政部、商务部、中国人民银行、国家市场监督管理总局、国家广播电视总局、国家保密局、国家密码管理局共12个部门联合发布《网络安全审查办法》,于2020年6月1日起实施。

    概念:

    网络安全,通常指计算机网络的安全,实际上也可以指计算机通信网络的安全。计算机通信网络是将若干台具有独立功能的计算机通过通信设备及传输媒体互连起来,在通信软件的支持下,实现计算机间的信息传输与交换的系统。而计算机网络是指以共享资源为目的,利用通信手段把地域上相对分散的若干独立的计算机系统、终端设备和数据设备连接起来,并在协议的控制下进行数据交换的系统。计算机网络的根本目的在于资源共享,通信网络是实现网络资源共享的途径,因此,计算机网络是安全的,相应的计算机通信网络也必须是安全的,应该能为网络用户实现信息交换与资源共享。下文中,网络安全既指计算机网络安全,又指计算机通信网络安全。

    安全的基本含义:客观上不存在威胁,主观上不存在恐惧。即客体不担心其正常状态受到影响。可以把网络安全定义为:一个网络系统不受任何威胁与侵害,能正常地实现资源共享功能。要使网络能正常地实现资源共享功能,首先要保证网络的硬件、软件能正常运行,然后要保证数据信息交换的安全。从前面两节可以看到,由于资源共享的滥用,导致了网络的安全问题。因此网络安全的技术途径就是要实行有限制的共享。

    展开全文
  • 系统安全机制

    2021-05-14 11:08:46
    AG351.SELINUXSElinux 是一个强制访问控制系统,它为每个进程与文件都打上一个安全上下文标签,而 selinux 通过这个标签对系统访问控制进行管理。2.针对车载产品对于启动安全、平台运行安全、通信安全三个主要领域有着...

    AG351.SELINUX

    SElinux 是一个强制访问控制系统,它为每个进程与文件都打上一个安全上下文标签,而 selinux 通过这个标

    签对系统访问控制进行管理。

    2.针对车载产品对于启动安全、平台运行安全、通信安全三个主要领域有着

    特 殊 很 高 的 要 求 , 为 此 Quectel 结 合 了 Qualcomm 给 出 的 secureboot 、QSEE/TrustZone安全机制以及Linux系统的DM-verity、SELinux和openSSL等组合方式,实现从启动到客户进程安全稳定运行,防止出现盗窃取、篡改客户信息和文件等重要信息。

    实时更新各层安全漏洞

    通信安全基于iptabel(针对客户特定的应用场景实现各种复杂安全路由策略),Openssl(定时完善安全漏洞、协助客户开发),实现安全可靠的网络通信。

    平台安全基于QSEE/TZ,SELinux等机制,实现linux系统资源文件保护,程序安装和执行,网路安全。QUECTEL 提供动态灵活的分区和文件系统机制,从而增加文件的存储安全以及FLASH 寿命QSEE/TZ TrustZone 提供一个可信程序执行环境(TEE)(包括内存安全、外设访问安全等),保证你的代码运行时不能被别人窥探到。

    固件保护:跟文件系统只读、备份还原机制、可定制化分区;

    启动安全基于QC-Secboot(内核安全启动/镜像签名),DM-Verity(文件系统安全校验,实现启动文件验证标签、文件系统安全),硬件调试接口关闭,本地通信接口关闭等(关闭jtag、fastboot、adb、串口、usb口)。(启动流程校验、优化、规范化)

    A7平台安全机制

    A7安全启动

    1.安全引导系统在启动过程的每个阶段添加加密检查。设备执行的软件镜像必须经过安全校验。这种额外的检测能够防止非法串改的软件在设备上运行。

    安全引导,通过hardware fuses识别被标记的启动镜像;

    签名工具,

    2.每个阶段启动一个镜像,被之前一个镜像检测;

    ROMCODE是最先信任启动的;

    每个阶段授权下一个阶段:ROMCODE->bootloader->ARM TrustZone->每个镜像通过其功能,建立设备安全性;

    3.使能安全启动ROMCODE 和bootloader

    (1) 将默认的key改变成用户使用的key,在目录SOURCE_DIR/sbu/keys/使用命令:$ openssl genrsa –aes256 -out key.pem 2048

    (2) When prompted about the pass-phase for RSA key, put pass-phase inpassphrase.txtinthe same directory.

    (3)Get user public key HASH and HASH ZERO bits count by the command tool:

    $ python3

    SOURCE_DIR/sbu/src/secure_boot_utils/sbu_main/primary_key_hash_creat

    or.py SOURCE_DIR/sbu/keys/rsakey.pem ../keys/passphase.txt L

    SHA256_TRUNC

    (4)Write public key HASH and zero bit count into OTP.

    使能安全启动需要以下相关配置:

    Secure boot configurations

    0xB[7:0]Number of bit 0 in User Public Key HASH

    0x10 – 0x13[31:0]User Public Key HASH

    ROMCODEBootloader in signed formatCsrvisor、kernel

    load and verifiesBootloader loads andverifies TrustEnvironment withSHA256 digest.

    SHA and RSASHA and RSA | RSA

    4.引导加载签名格式

    RSA 密匙证书和镜像签名;

    证书签名格式为:SHA256;

    M3安全启动

    1.对启动镜像进行安全校验。

    安全性

    一、安全特征

    1.平台安全

    启动校验:A7、M3、Kalimba Audio(音频处理器)

    生命周期状态:通过控制对设备的产生和管理决定设备的安全能力

    客户机密安全配置(密匙和证书)

    安全调试

    RMA mode :快速诊断由于缺陷而返回的设备

    2.内容保护

    cortexA7 TrustZone、SRAM、DRAM等

    3.安全

    对硬件单元的访问控制的配置寄存器的防火墙保护

    分区的NOC映射

    4.第三方应用的执行

    A7提供资源(TEE),允许执行第三方应用程序,同时保留

    平台的完整性、安全性、内容保护性、安全性等特点。

    5.软件许可与版本控制

    二、安全资源

    1.Trusted Execution Environment(TEES)

    TrustZone extensions、DRAM 、SPRAM、regitsters、crypto engines、OTP 、ROMcode.etc

    2.微型控制子系统(MCS)

    cortex M3,Network on chip,SHA-256 engine,ROM code.

    3.常供电区域

    TEES MCS

    4.IPC

    内部处理器通信机制带安全机制

    5.安全DMA

    大多数DMA通道可配置成安全模式和非安全模式

    三、生命周期状态(LCS)

    芯片制造、设备制造、安全、安全禁用。

    四、认证启动

    cortex M3、cortex A7

    五、安全子系统

    平台安全由安全子系统硬件支持

    六、MCS 安全

    MCS安全包括SH-256和AES-128加密硬件控制器。

    七、配置TEE

    1.内存防火墙

    SPRAM、DRAM

    防火墙用于设置针对特定发起方的内存缓冲区,并可以提供不同的访问。

    对于不同的发起人和不同权限的读/写访问的缓冲区的权限。

    2.寄存器防火墙

    寄存器防火墙可以被配置为保护块(地址范围)免受特定CPU发起人,其他,非

    在任何情况下,CPU发起人都无法访问寄存器。

    3.KAS、ARM和cortex M3 安全通信传输

    4.NoC安全边带信号

    八、配置IPC安全

    安全配置应该使用NFWW边带管理器根据安全要求划分这些。

    九、DMA控制器

    每个DMA控制器(除DMAC1由NOC目标防火墙(NTFW)保护)

    根据相关联的安全状态,每个DMAC信道可以被配置为安全或非安全的。

    十、安全性

    安全性是通过在ARM CORTEX-A7(CA7)和ARM CORTEX-M3(CM3)之间划分单元来实现的。

    十一、调试

    ARM使用术语“安全调试”,这意味着CaleSee硬件可以生成安全事务。

    调试与安全相关的项。安全调试还涉及安全设备的调试。

    十二、供应

    供应是引入OEM特定机密(例如DRM密钥)和完整性关键数据(例如证书)的行为再进入系统

    十三、区域返回操作/RMA

    车载安全机制

    一、硬件安全

    1.主板安全(主板上调试接口、测试点安全评估)

    2.存储安全(敏感器件标识、存储器件安全评估)

    3.总线安全(can总线安全协议)

    4.无线模块安全

    二、软件安全

    1.代码逻辑安全

    2.日志输出安全

    3.运行数据安全

    4.通信安全(4G、wifi、蓝牙等)

    5.业务逻辑安全

    6.启动安全

    7.权限控制

    8.更新安全

    9.操作系统安全

    10.应用安全(应用系统和应用程序的安全)

    11.可修复安全

    12.固件安全(存储安全、启动安全、升级安全)

    13.系统安全加固和漏洞利用缓解

    (1)开启随机数生成开关(CONFIG_ARCH_RANDOM)、选择对应随机数生成硬件平台(CONFIG_HW_RANDOM)

    (2)开启审计支持(CONFIG_AUDIT)、支持对系统调用审计(CONFIG_AUDITSYSCALL)

    (3)开启SYNcookie以应对拒绝服务攻击(CONFIG_SYN_COOKIES)

    (4)开启栈溢出保护(CONFIG_CC_STACKPROTECTOR)

    (5)开启内核只读数据不可写(CONFIG_DEBUG_RODATA)

    (6)约束root权限对/dev/mem访问权限(CONFIG_STRICT_DEVMEM)

    (7)关闭/proc/kcore内存映射(CONFIG_PROC_KCORE)

    (8)开机系统内核日志访问控制(CONFIG_SECUITY_DMESG_RESTRICT)

    (9)开启内存也可执行权限检查(CONFIG_PAX_NOEXEC)

    (10)开启内存权限检查(CONFIG_PAX_MPROTECT)

    (11)开启地址空间布局随机化(CONFIG_PAX_ASLR)

    (12)开启内核栈布局随机化(CONFIG_PAX_RANDKSTACK)

    开启用户控件栈布局随机化(CONFIG_PAX_RANDUSTACK)

    (13)开机映射空间布局随机化(CONFIG_PAX_RANDMMAP)

    (14)开启/proc目录安全加固(CONFIG_GRKERNSEC_PROC)

    (15)开启/proc目录用户隔离(CONFIG_GRKERNSEC_PROC_USER)

    (16)开启/proc目录用户组隔离(CONFIG_GRKERNSEC_PROC_GROUP)

    (17)阻止非root用户访问设备信息(CONFIG_GRKERNSEC_PROC_ADD)

    (18)阻止查看其它用户LINK信息(CONFIG_GRKERNSEC_LINK)

    (19)阻止用户向其他用户管道进行写入(CONFIG_GRKERNSEC_FIFO)

    (20)CHRROOT安全策略加固(CONFIG_GRKERNSEC_CHROOT)

    (21)开启可执行文件与脚本白名单配置(CONFIG_GRKERNSEC_TPE)

    (22)自主访问控制(访问权限控制USER-GROUP-OTHER、Linux Capability机制、安卓权限机制)

    (23)强制访问控制(SELINUX、APPArmor、基于linux内核系统模块)

    三、移动app

    应用安全(应用系统和应用程序的安全)

    身份认证、会话管理、敏感数据存储传输、组件安全、常见安全漏洞、不安全运行环境。

    四、云平台TSP

    展开全文
  • 大家好,我是前端岚枫,今天主要跟大家分享我整理的笔记2021前端面试题系列:fetch与axios、浏览器内标签页之间的通讯方法、XSS 和CSRF以及如何防范,此方面内容在我们的工作中常用到, 也是面试官经常提问的问题,...

    大家好,我是前端岚枫,今天主要跟大家分享我整理的笔记2021前端面试题系列:fetch与axios、浏览器内标签页之间的通讯方法、XSS 和CSRF以及如何防范,此方面内容在我们的工作中常用到, 也是面试官经常提问的问题,希望下面文章对大家有所帮助。

    fetch与axios

    问题分析

    fetch与axios的定位认识。fetch是浏览器提供的api,axios是社区封装的一个组件。

    fetch 是一个低层次的API,你可以把它考虑成原生的XHR,所以使用起来并不是那么舒服,需要进行封装。多年来,XMLHttpRequest一直是web开发者的亲密助手。无论是直接的,还是间接的, 当我们谈及Ajax技术的时候,通常意思就是基于XMLHttpRequest的Ajax,它是一种能够有效改进页面通信的技术。 Ajax的兴起是由于Google的Gmail所带动的,随后被广泛的应用到众多的Web产品(应用)中,可以认为, 开发者已经默认将XMLHttpRequest作为了当前Web应用与远程资源进行通信的基础。 而本文将要介绍的内容则是XMLHttpRequest的最新替代技术——Fetch API, 它是W3C的正式标准,下面将会介绍Fetch API的相关知识,以及探讨它所能使用的场景和能解决的问题。

    一、fetch优势:

    1. 语法简洁,更加语义化
    2. 基于标准 Promise 实现,支持 async/await
    3. 更加底层,提供的API丰富(request, response)
    4. 脱离了XHR,是ES规范里新的实现方式

    二、fetch存在问题
    fetch是一个低层次的API,你可以把它考虑成原生的XHR,所以使用起来并不是那么舒服,需要进行封装。

    1. fetch只对网络请求报错,对400,500都当做成功的请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致请求不能完成时,fetch 才会被 reject。
    2. fetch默认不会带cookie,需要添加配置项: fetch(url, {credentials: ‘include’})
    3. fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费
    4. fetch没有办法原生监测请求的进度,而XHR可以
    fetch('http://example.com/movies.json')   //第二个参数  指定 post  get
      .then(function(response) {
        return response.json();
      })
      .then(function(myJson) {
        console.log(myJson);
      });
    

    axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,它本身具有以下特征:

    1. 从浏览器中创建 XMLHttpRequest
    2. 支持 Promise API
    3. 客户端支持防止CSRF
    4. 提供了一些并发请求的接口(重要,方便了很多的操作)
    5. 从 node.js 创建 http 请求
    6. 拦截请求和响应
    7. 转换请求和响应数据
    8. 取消请求
    9. 自动转换JSON数据
    // axios举例
    axios.get('/user', {
        params: {
          ID: 12345
        }
      })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });
    

    总结:axios既提供了并发的封装,也没有fetch的各种问题,而且体积也较小,当之无愧现在最应该选用的请求的方式。

    面试题点

    1. fetch是规范底层api 浏览器原生支持的
    2. axios是封装好的框架
    3. fetch和axios的优缺点

    回答思路

    首先明确fetch和axios分别是个啥?然后阐述fetch和axios的优缺点

    相关扩展

    1. axios的github仓库地址
    2. axios的api文档说明
    3. fetch的api规范MDN社区说明
    4. w3c和whatwg

    浏览器内多个标签页之间的通讯

    问题分析

    本题主要考察多页应用中各个页签之间数据交互的技术手段。实现多页通讯主要有利用浏览器数据存储方式和服务器方式。浏览器数据存储的方式主要用本地存储方式解决。即调用 localStorage、Cookie等本地存储方式。服务器方式主要使用websocket技术使多页签都监听服务器推送事件来获得其他页签发送的数据。

    浏览器存储:

    1. 调用localStorage

    在一个标签页里面使用 localStorage.setItem(key,value)添加(修改、删除)内容;
    在另一个标签页里面监听 storage 事件。 即可得到 localstorge 存储的值,实现不同标签页之间的通信。

    在一个标签页调用localStorage.setItem(name,val)保存数据localStorage.removeItem(name)删除数据的时候会触发 'storage’事件。
    在另外一个标签页监听document对象的storage事件,在事件event对象属性中获取信息

    event事件对象包含以下信息

    1. domain
    2. newValue
    3. oldValue
    4. key

    标签页1:

    <input id="name"> 
    <input type="button" id="btn" value="提交"> 
    <script type="text/javascript"> 
            window.onload = function () {
                var btnEle = document.getElementById('btn');
                var nameEle = document.getElementById('name');
                btnEle.onclick = function () {
                    var name = nameEle.value;
                    localStorage.setItem("name", name);
                }
            }
    </script>
    

    标签页2:

    <script type="text/javascript"> 
            window.onload = function () {
                window.addEventListener("storage", function (event) {
                    console.log(event.key + "=" + event.newValue);
                });
            }
    </script>
    

    2. 调用 cookie+setInterval()

    将要传递的信息存储在cookie中,每隔一定时间读取cookie信息,即可随时获取要传递的信息。

    在A页面将需要传递的消息存储在cookie当中

    在B页面设置setInterval,以一定的时间间隔去读取cookie的值。

    页面1:

    <input id="name"> 
    <input type="button" id="btn" value="提交"> 
    <script type="text/javascript"> 
    $(function(){ 
    $("#btn").click(function(){ 
    var name=$("#name").val(); 
    document.cookie="name="+name; 
    }); 
    }); 
    </script>
    

    页面2:

    <script type="text/javascript"> 
    $(function(){ 
    function getCookie(key) { 
    return JSON.parse("{\"" + document.cookie.replace(/;\s+/gim,"\",\"").replace(/=/gim, "\":\"") + "\"}")[key]; 
    } 
    setInterval(function(){ 
    console.log("name=" + getCookie("name")); 
    }, 10000); 
    }); 
    </script>
    

    3. 监听服务器事件

    1. ** websocket通讯**

    WebSocket是全双工(full-duplex)通信自然可以实现多个标签页之间的通信。WebSocket是HTML5新增的协议,它的目的是在浏览器和服务器之间建立一个不受限的双向通信的通道,比如说,服务器可以在任意时刻发送消息给浏览器。为什么传统的HTTP协议不能做到WebSocket实现的功能?这是因为HTTP协议是一个请求-响应协议,请求必须先由浏览器发给服务器,服务器才能响应这个请求,再把数据发送给浏览器。也有人说,HTTP协议其实也能实现啊,比如用轮询或者Comet。这个机制的缺点一是实时性不够,二是频繁的请求会给服务器带来极大的压力。Comet本质上也是轮询,但是在没有消息的情况下,服务器先拖一段时间,等到有消息了再回复。这个机制暂时地解决了实时性问题,但是它带来了新的问题:以多线程模式运行的服务器会让大部分线程大部分时间都处于挂起状态,极大地浪费服务器资源。另外,一个HTTP连接在长时间没有数据传输的情况下,链路上的任何一个网关都可能关闭这个连接,而网关是我们不可控的,这就要求Comet连接必须定期发一些ping数据表示连接“正常工作”。WebSocket并不是全新的协议,而是利用了HTTP协议来建立连接。为什么WebSocket连接可以实现全双工通信而HTTP连接不行呢?实际上HTTP协议是建立在TCP协议之上的,TCP协议本身就实现了全双工通信,但是HTTP协议的请求-应答机制限制了全双工通信。WebSocket连接建立以后,其实只是简单规定了一下:接下来,咱们通信就不使用HTTP协议了,直接互相发数据吧。安全的WebSocket连接机制和HTTPS类似。首先,浏览器用wss://xxx创建WebSocket连接时,会先通过HTTPS创建安全的连接,然后,该HTTPS连接升级为WebSocket连接,底层通信走的仍然是安全的SSL/TLS协议。

    WebSocket连接必须由浏览器发起,特点:

    (1)建立在 TCP 协议之上,服务器端的实现比较容易。

    (2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

    (3)数据格式比较轻量,性能开销小,通信高效。

    (4)可以发送文本,也可以发送二进制数据。

    (5)没有同源限制,客户端可以与任意服务器通信。

    (6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

    示例: 浏览器端代码

    // Create WebSocket connection.
    const socket = new WebSocket('ws://localhost:8080');
    
    // Connection opened
    socket.addEventListener('open', function (event) {
        socket.send('Hello Server!');
    });
    
    // Listen for messages
    socket.addEventListener('message', function (event) {
        console.log('Message from server ', event.data);
    });
    

    ** 2. html5浏览器的新特性SharedWorker**

    普通的webworker直接使用new Worker()即可创建,这种webworker是当前页面专有的。然后还有种共享worker(SharedWorker),这种是可以多个标签页、iframe共同使用的。SharedWorker可以被多个window共同使用,但必须保证这些标签页都是同源的(相同的协议,主机和端口号)

    首先新建一个js文件worker.js,具体代码如下:

    // sharedWorker所要用到的js文件,不必打包到项目中,直接放到服务器即可
    let data = '';
    let onconnect = function (e) {
      let port = e.ports[0];
      port.onmessage = function (e) {
        if (e.data === 'get') {
          port.postMessage(data)
        } else {
          data = e.data
        }
      }
    }
    

    webworker端(暂且这样称呼)的代码就如上,只需注册一个onmessage监听信息的事件,客户端(即使用sharedWorker的标签页)发送message时就会触发。

    注意webworker无法在本地使用,出于浏览器本身的安全机制,所以我这次的示例也是放在服务器上的,worker.js和index.html在同一目录。

    因为客户端和webworker端的通信不像websocket那样是全双工的,所以客户端发送数据和接收数据要分成两步来处理。示例中会有两个按钮,分别对应的向sharedWorker发送数据的请求以及获取数据的请求,但他们本质上都是相同的事件–发送消息。

    webworker端会进行判断,传递的数据为’get’时,就把变量data的值回传给客户端,其他情况,则把客户端传递过来的数据存储到data变量中。下面是客户端的代码:

    // 这段代码是必须的,打开页面后注册SharedWorker,显示指定worker.port.start()方法建立与worker间的连接
        if (typeof Worker === "undefined") {
          alert('当前浏览器不支持webworker')
        } else {
          let worker = new SharedWorker('worker.js')
          worker.port.addEventListener('message', (e) => {
            console.log('来自worker的数据:', e.data);
          }, false);
      
          worker.port.start();
          window.worker = worker;
        }
    // 获取和发送消息都是调用postMessage方法,我这里约定的是传递'get'表示获取数据。
    window.worker.port.postMessage('get')
    window.worker.port.postMessage('发送信息给worker')
    页面A发送数据给worker,然后打开页面B,调用window.worker.port.postMessage('get'),即可收到页面A发送给worker的数据。
    

    面试题点

    什么是多页应用

    两种浏览器存储方式实现多页签通讯

    websocket 和 shareworker 实现多页通讯(了解)

    回答思路

    首先明确一下多页应用的应用场景,然后分别介绍浏览器存储方式和借助服务器方式实现多页通讯的实现关键技术。

    相关扩展

    1. H5的多线程(Worker SharedWorker)使用详解
    2. SharedWorker api
    3. websocket

    XSS、CSRF 以及如何防范

    问题分析

    在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式。下面我们首先简单了解一下什么是 XSS 和 CSRF 。

    XSS,即 Cross Site Script,中译是跨站脚本攻击;

    其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS。

    XSS 攻击是指攻击者在网站上注入恶意的客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一种攻击方式。

    攻击者对客户端网页注入的恶意脚本一般包括 JavaScript,有时也会包含 HTML 和 Flash。有很多种方式进行 XSS 攻击,但它们的共同点为:将一些隐私数据像 cookie、session 发送给攻击者,将受害者重定向到一个由攻击者控制的网站,在受害者的机器上进行一些恶意操作。

    XSS攻击可以分为3类:反射型(非持久型)、存储型(持久型)、基于DOM。

    xss类型

    1、反射型 (Reflected XSS ) 发出请求时,XSS代码出现在url中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,所以叫反射型XSS。

    2、存储型存 Stored XSS和 Reflected XSS的差别就在于,具有攻击性的脚本被保存到了服务器端(数据库,内存,文件系统)并且可以被普通用户完整的从服务的取得并执行,从而获得了在网络上传播的能力。

    3、DOM型 (DOM-based or local XSS) 即基于DOM或本地的 XSS 攻击:其实是一种特殊类型的反射型 XSS,它是基于 DOM文档对象模型的一种漏洞。可以通过 DOM来动态修改页面内容,从客户端获取 DOM中的数据并在本地执行。基于这个特性,就可以利用 JS脚本来实现 XSS漏洞的利用。

    实际情况下的攻击例子:

    1. 举例有这样一个网站,可以让你对某个文章输入评论:

    image.png

    防御措施:

    (1)输入过滤,避免 XSS 的方法之一主要是将用户输入的内容进行过滤。对所有用户提交内容进行可靠的输入验证,包括对 URL、查询关键字、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。(客户端和服务器都要)

    (2)输出转义

       例如: 往 HTML 标签之间插入不可信数据的时候,首先要做的就是对不可信数据进行 HTML Entity 编码 [HTML 字符实体](http://www.w3school.com.cn/html/html_entities.asp)
    
    function htmlEncodeByRegExp  (str){  
             var s = "";
             if(str.length == 0) return "";
             s = str.replace(/&/g,"&amp;");
             s = s.replace(/</g,"&lt;");
             s = s.replace(/>/g,"&gt;");
             s = s.replace(/ /g,"&nbsp;");
             s = s.replace(/\'/g,"&#39;");
             s = s.replace(/\"/g,"&quot;");
             return s;  
     }
    var tmpStr="<p>123</p>";   
    var html=htmlEncodeByRegExp (tmpStr)
    console.log(html) //&lt;p&gt;123&lt;/p&gt;
    document.querySelector(".content").innerHTML=html; //<p>123</p>
    

    (3)使用 HttpOnly Cookie

    将重要的cookie标记为httponly,这样的话当浏览器向Web服务器发起请求的时就会带上cookie字段,但是在js脚本中却不能访问这个cookie,这样就避免了XSS攻击利用JavaScript的document.cookie获取cookie。

    现代web开发框架如vue.js、react.js等,在设计的时候就考虑了XSS攻击对html插值进行了更进一步的抽象、过滤和转义,我们只要熟练正确地使用他们,就可以在大部分情况下避免XSS攻击。

    CSRF , 即Cross-site request forgery)中译是跨站请求伪造;CSRF 顾名思义,是伪造请求,冒充用户在站内的正常操作。我们知道,绝大多数网站是通过 cookie 等方式辨识用户身份(包括使用服务器端 Session 的网站,因为 Session ID 也是大多保存在 cookie 里面的),再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。

    image.png

    你可以这样来理解:
    攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。

    CSRF攻击攻击原理及过程如下:

    1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
    2. 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
    3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
    4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
    5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

    举例:

    受害者 Bob 在银行有一笔存款,通过对银行的网站发送请求

    http://bank.example/withdraw?account=bob&amount=1000000&for=bob2

    可以使 Bob 把 1000000 的存款转到 bob2 的账号下。通常情况下,该请求发送到网站后,服务器会先验证该请求是否来自一个合法的 session,并且该 session 的用户 Bob 已经成功登陆。

    黑客 Mallory 自己在该银行也有账户,他知道上文中的 URL 可以把钱进行转帐操作。Mallory 可以自己发送一个请求给银行:
    

    http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory

    但是这个请求来自 Mallory 而非 Bob,他不能通过安全认证,因此该请求不会起作用。

    这时,Mallory 想到使用 CSRF 的攻击方式,他先自己做一个网站,在网站中放入如下代码:
    

    src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory ”,并且通过广告等诱使 Bob 来访问他的网站。当 Bob 访问该网站时,上述 url 就会从 Bob 的浏览器发向银行,而这个请求会附带 Bob 浏览器中的 cookie 一起发向银行服务器。大多数情况下,该请求会失败,因为他要求 Bob 的认证信息。但是,如果 Bob 当时恰巧刚访问他的银行后不久,他的浏览器与银行网站之间的 session 尚未过期,浏览器的 cookie 之中含有 Bob 的认证信息。这时,悲剧发生了,这个 url 请求就会得到响应,钱将从 Bob 的账号转移到 Mallory 的账号,而 Bob 当时毫不知情。等以后 Bob 发现账户钱少了,即使他去银行查询日志,他也只能发现确实有一个来自于他本人的合法请求转移了资金,没有任何被攻击的痕迹。而 Mallory 则可以拿到钱后逍遥法外。

    防范CSRF

    (1)验证 HTTP Referer 字段,利用 HTTP 头中的 Referer 判断请求来源是否合法,Referer记录了该 HTTP 请求的来源地址。
    

    优点:简单易行,只需要在最后给所有安全敏感的请求统一增加一个拦截器来检查 Referer 的值就可以。特别是对于当前现有的系统,不需要改变当前系统的任何已有代码和逻辑,没有风险,非常便捷。
    缺点:Referer 的值是由浏览器提供的,不可全信,低版本浏览器下 Referer 存在伪造风险。用户自己可以设置浏览器使其在发送请求时不再提供 Referer 时,网站将拒绝合法用户的访问。

    (2)在请求地址中添加 token 并验证。CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。要抵御CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。
    

    优点:这种方法要比检查 Referer 要安全一些,token 可以在用户登陆后产生并放于 session 之中,然后在每次请求时把 token 从 session 中拿出,与请求中的 token 进行比对。

    缺点:对所有请求都添加 token 比较困难。难以保证 token 本身的安全,依然会被利用获取到 token。

    (3)在 HTTP 头中自定义属性并验证
    这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。

    优点:统一管理 token 输入输出,可以保证 token 的安全性。
    缺点:有局限性,无法在非异步的请求上实施。

    面试题点

    明确 xss和csrf是什么

    明确xss和 csrf攻击的特点

    如何防范xss和csrf攻击

    回答思路

    首先明确 xss(Cross Site Scripting )是跨站脚本攻击 csrf(Cross-site request forgery)是跨站请求伪造, 然后分别举一下两种攻击的例子,最后谈下两种攻击的防范措施。

    相关扩展

    1. XSS 和 CSRF简述及预防措施
    2. 服务器受到DDoS攻击

    关注公众号:程序员石磊 获取更多前端面试题

    展开全文
  • 近年来,科技在飞速的发展,RFID电子标签构建智能生活,以独特的优势让生活、工作发生了质的改变...而传统的条形码虽然成本低,但是无法识别多个标签、信息容量小、安全性不强等很多的不足之处,我们一起来以下对比图。
  • 是什么 ...meta>...都有哪些 1. HTML规范中定义的标准名称 application-name 网页中所运行的应用名称。(注意不同于<title>标签) author: 文档作者的名字 description:对页面内容的描述,一些浏
  • "2018级播音与主持艺术1班2018级财务管理1班2018级财务管理2班2018级财务...安全1班2018级食品质量与安全2班2018级视觉传达设计1班2018级视觉传达设计2班2018级数学与应用数学1班2018级数学与应用数学2班2018级数学与...
  • Java如何快速获取Html标签中的内容

    千次阅读 2021-01-21 13:11:00
    输入内容:<div><script>alert(1);</script></div> 输出内容:alert(1); 转义文本中的HTML字符为安全的字符:&#60;div&#62;&#60;script&#62;alert(1);&#60;/script&...
  • 移除HTML标签_html

    2021-06-22 23:07:04
    方法一 : 禁用html最简单的方法是直接禁用html标签而不用移除它们. 可以使用Replace()函数. 例如:strText = Replace(strText, “或者直接禁用所有的html:strText = Replace(strText, “”RegEx.Global = TrueRemove...
  • 选择安全的编程语言:指那些具有对缓冲区、指针和内存进行管理能力而避免发生软件安全问题的语言,类型安全语言就属于安全的编程语言。 版本管理: [1] 保证开发团队正在使用的程序版本是正确的,同时在必要的情况下...
  • 点击iframe里面嵌入的内容,获取iframe标签外面的元素,获取不到的问题 问题描述,点击iframe嵌入的元素,想让tab栏样式跟着切换,iframe嵌入的链接也要跟着替换 1.这个是iframe嵌入内容里面的元素,点击这个,想让...
  • 1.截取:析出消息内容、通信量分析 2.中断:拒绝服务 3.篡改 4.伪造 5.重放 6.否认:执行者是通信的发送方和接收方 2.1.2 安全性攻击的分类 • 被动攻击本质上是传输过程中的偷听或监视,目的是从传输中
  • 提高微服务安全性的11个方法

    千次阅读 多人点赞 2020-12-21 08:41:47
    1.通过设计确保安全 OWASP 2.扫描依赖 3.随处使用HTTPS 安全的GraphQL API 安全的RSocket端点 4.使用身份令牌 授权服务器:多对一还是一对一? 在JWT上使用PASETO令牌 5.加密和保护密钥 6.通过交付流水线...
  • SVG辅助标签

    2021-01-13 18:07:05
    前面的话本文将详细介绍SVG辅助标签超链接在SVG中,可以使用超链接。超链接可以添加到任意的图形上,类比于热区SVG中的超链接如下3个常用属性xlink:href 指定连接地址xlink:title 指定连接标题target 指定打开方式...
  • HTML常用的标签

    2021-06-10 12:43:49
    表单可以包含input、label、textareainput标签submit:用于数据提交password: 用于输入密码,输入内容会呈现为小圆点,进行隐藏checkbox :多选框radio 多选框:通过name属性来分组,name值相同的单选按钮被归为一...
  • 内容安全策略(content-security-policy)

    千次阅读 2020-12-31 11:45:37
    这就是"网页安全政策"(Content Security Policy,缩写 CSP)的来历 CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只...
  • 标签与指标

    2021-08-01 21:29:04
    本文要解决的问题是搞懂标签与指标的... 一般来说,随着触发条件而产生的带时间的记录,即认为是事实信息,包括:用户注册、生成订单、创建班级等,事实信息一般带4W1H1R的基本属性(即:Who/Where/When/What/How...
  • 场景描述如上接口中,content字段:content:"这是内容"需要在网页中现实如下效果:2.解决方法v-htmlv-html可以操作元素中的HTML标签,效果类似于jquery里的 .html()方法,在不安全的页面比如注册或者登陆页面千万...
  • 作为终极产品,智能标签不受"卡"的限制,形态材质也多姿多彩的发展空间。 它的产品分三大类: 1、标签类 2、注塑类 3、卡片类 1. 标签类 带自粘功能的标签,可以在生产线上由贴标机揭贴在箱、瓶等物品上,或手工...
  • 等等一大堆需要解决的问题,要做就要做最好的,用最优的方法,最快的算法,最安全的code来以太阳肩并肩。起初以为增删改查就完事了,其实没那么简单。就连读取文章看似很简单的事情其实并不是想象那样,直接从...
  • 《国务院关于特大安全事故行政责任追究的规定》(国务院令第302号)中的特大安全事故包括___等。 问题:藏族文化的三大板块包括()。304439 多元统计基础上的生态系统重建首先利用Olso的生态系统数据库和5个主要的气候...
  • 项目关联不上开源项目(library) 首先是add library的时候重新打开始始终显示关联错误,在reference中出现一个红叉,无论如何都解决不了,remove后重新添加也会这个问题,Eclipse也没有任何出错提示. 最后在h ... ...
  • html 表格标签 表单标签 列表标签

    千次阅读 2021-04-19 01:36:33
    表格标签 1.表格框架 标签 描述 table 定义表格 tr 行 td 列 th 表头标签 caption ...设置单元格内容与单元格边框之间的空白间距 像素值(默认为1像素) width 设置表格的宽度 像素值 h
  • • 物联网感知层信息安全问题是物联网安全的核心内容 • 物联网感知层面临的安全威胁主要表现为 感知层中节点自身故障(如节点被捕获、被控制、功能失效或服务中断、 身份伪造等) 节点间的链接关系不正常(如...
  • 图6:用户才干 标签内容权重衰减函数 五、小结 当前我们主要从社交关系、原创内容、影响力三个维度来辨认 用户的才干 标签以及计算相应的权重,同时经过 用户的自填信息、认证信息等其他信息中止 调权。关于 某些...
  • 前端存在哪些安全

    2020-12-30 11:33:46
    XSS的英文是Cross Site Scripting也就是常说的跨站脚本攻击,因为缩写和CSS重叠,所以只能叫XSS,跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。...
  • 文章首先阐述机器学习技术在网络空间安全应用研究中的应用流程,然后从系统安全,网络安全和应用安全三个层面介绍了机器学习在网络空间安全领域中的解决方案,归纳了这些解决方案的安全特征及常用的机器学习算法,...
  • title: NCRE三级信息安全笔记 categories: CS Professional tags: Informatica security description: 考NCRE三级信息安全时的一些笔记 | 不完整 abbrlink: 758c date: 2021-03-19 00:00:00 第一章 信息安全保障...
  • 1.HTML简介HTML是用来做网页...语法介绍html是由浏览器来解析,所以不需要安装任何编译环境Html文档的基本结构:声明文档是网页当中最大的标签,所有内容都要写在此标签内head头 主要用于书写网页的设置 一般写...
  • 信息安全第五章 操作系统安全

    千次阅读 2021-11-12 23:27:07
    第5章 操作系统安全 了解操作系统安全的发展历史; 掌握安全操作系统的安全策略与模型; (重点) ...[外链图片转存失败,源站可能防盗链机制,建议将图片保存下来直接上传(img-99uvi1Ri-1636730799867)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 260,053
精华内容 104,021
关键字:

安全标签的内容有哪些