鸿蒙HarmonyOS 4-ArkUI状态管理
@State
在声明式UI中,是以状态驱动视图更新:
状态(State):指驱动视图更新的数据(被装饰器标记的变量)
视图(View):基于UI描述渲染得到用户界面
被State修饰的变量才能更新
说明:
@State装饰器标记的变量必须初始化,不能为空值。
@State支持Object、class、string、number、boolean、enum类型以及这些类型的数组。
嵌套类型以及数组中的对象属性无法触发视图更新。1234567891011@State message: string = 'Hello World !!' build() { column(){ Text(this.message) .fontSize(30) .fontWeight(FontWeight.Bold) .fontColor('#36D') .onClick(() => { this.message = 'Hello ArkTS!' ...
鸿蒙HarmonyOS 4-ArkUI组件
Image:图片显示组件
声明Image组件并设置图片源:1Image(src: string|PixelMap|Resource)
string格式,通常用来加载网络图片,需要申请网络访问权限:ohos.permission.INTERNETImage('https://xxx.png')需要网络权限,在module.json5配置文件中声明权限。12345"requestPermissions": [ { "name": "ohos.permission.INTERNET" } ]
PixelMap格式,可以加载像素图,通常用在图片编辑中Image(pixelMapObject)
Resource格式,加载本地图片,推荐使用Image($r('app.media.xxx')Image($rawfile('xxx.png'))
添加图片属性12345Image($r('app.media.icon')) . ...
JWT安全
JWTJWT定义
JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
JWT作用
授权:一旦用户登录,每个后续请求将包括JWT,从而允许用户访问该令牌允许的路由,服务和资源。它的开销很小并且可以在不同的域中使用。如:单点登录。
信息交换:在各方之间安全地传输信息。JWT可进行签名(如使用公钥/私钥对),因此可确保发件人。由于签名是使用标头和有效负载计算的,因此还可验证内容是否被篡改。
JWT区别传统Session
http协议本身是一种无状态的协议,如果用户向服务器提供了用户名和密码来进行用户认证,下次请求时,用户还要再一次进行用户认证才行。因为根据http协议,服务器并不能知道是哪个用户发出的请求,所以为了让我们的应用能识别是哪个用户发出的请求,我们只能在服务器存储一份用户登录的信息,这份登录信息会在响应时传递给浏览器, ...
XXE&XML之利用检测绕过
简介XML基础概念
XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。
XXE概念
XXE漏洞全称XMLExternal Entity Injection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。
例如PHP中的simplexml_load默认情况下会解析外部实体,有XXE漏洞的标志性函数为simplexml_load_string()。
XML与HTML的主要差异
XML被设计为传输和存储数据,其焦点是数据的内容。
HTML被设计用来显示数据,其焦点是数据的外观。
HTML旨在显示信息,而XML旨在传输信息。
XML外部实体12345678910111213141516<!--文档类型定义--><!DOCTYPE note [ <!--定义此文档时note类型的文档--><!ELEME ...
AES加密算法流程
AES加密简介
现代密码学按照密钥的数量分为对称加密和非对称加密,对称加密只使用一个密钥加解密,而非对称需要公钥和私钥分别加解密。
AES属于对称加密,因为使用同一把密钥,所有速度快,适合数据量比较大的加解密。
AES是一种分组密码 分组长度为128位(16字节),根据密钥长度可分为AES-128 AES-192和AES-256,密钥长度不同,AES的加密轮数也不同。
AES
密钥长度/bit
分组长度/bit
加密轮数
AES-128
128
128
10
AES-192
192
128
12
AES-256
256
128
14
AES流程
AES的具体步骤主要分为密钥扩展、字节代换、行移位、列混淆、轮密钥加。
给定一个明文16位,是个4*4的字节矩阵,将轮密钥与明文进行异或运算
对密文块进行S-盒替换
再对结果进行行移位
再对结果进行列混淆交换
再进行轮密钥加
以128位为例
密钥扩展
密钥扩展是将128位的密钥扩展为11个128位的密钥
每一轮用一个128位进行轮密钥加操作
当i为4的倍数时,计算W[i],W[i-1]进行左移1个 ...
Java反序列化
Java反序列化
Java反序列化是近些年安全业界研究的重点领域之一,在Apache Commons Collections 、JBoss 、WebLogic 等常见容器、库中均发现有该类漏洞,而且该类型漏洞容易利用,造成的破坏很大,因此影响广泛。
Java 序列化是指把 Java 对象转换为字节序列的过程,序列化后的字节数据可以保存在文件、数据库中;而Java 反序列化是指把字节序列恢复为 Java 对象的过程。
序列化和反序列化通过ObjectInputStream.readObject()和ObjectOutputStream.writeObject()方法实现。
在java中任何类如果想要序列化必须实现java.io.Serializable接口123public class Hello implements java.io.Serializable { String name;}
java.io.Serializable其实是一个空接口,在java中该接口的唯一作用是对一个类做一个 标记 让jre确定这个类是可以序列化的。
同时java中支持在类中定 ...
PHP反序列化
简介
序列化就是将数据转换成一种可逆的数据结构,逆向的过程就叫做反序列化
比如:快递一张桌子,一般都会把它拆掉成板子,再装到箱子里面,就可以快递寄出去了,这个过程就类似我们的序列化的过程(把数据转化为可以存储或者传输的形式)。当收到货后,就需要把这些板子组装成桌子的样子,这个过程就像反序列的过程(转化成当初的数据对象)。
PHP将数据序列化和反序列化会用到两个函数
serialize 将对象格式化成有序的字符串
unserialize 将字符串还原成原来的对象
序列化的目的是方便数据的传输和存储,在PHP中,序列化和反序列化一般用做缓存,比如session缓存,cookie等。
常见的序列化格式
二进制格式
字节数组
json字符串
xml字符串
PHP序列化序列化函数serialize()123456789101112<?php class Ctf{ public $flag='flag{****}'; public $name='cxk'; public $age ...
找回机制及接口安全
找回机制
当找回密码的时候,涉及到验证码,通过验证码来验证是否为本人操作
这个地方的安全问题,未验证验证码的匹配关系
客户端回显
这种就是再调用短信平台或者邮箱平台的时候,没有判定验证码和手机号或者邮件进行绑定,并且把验证码检验直接放在客户端的返回数据包中,从而导致验证码在客户端中显示。但是也存在对内容进行加密的情况,若遇到加密,先看看是否能够解密,若无法解密再想其他办法。
Response状态值
Response状态值,就是在服务器发送某个密码重置的凭据之后,出现特定的响应值(ture,1,ok,success等等,例如响应头中的HTTP/1.1 200 ok),而且例如如果回显值得校验是发送到客户端进行,通过对校验值得使用规则进行分析后,抓包将Response状态值改为正确的,然后放包,这样就能够从而达到重置密码得效果。
验证码爆破
发送给我们的验证码是纯数字,比如四位,或者是六位,在短时间内进行爆破,可以得到接收到的验证码,比如发送给我是1234,我们可以把请求验证码的数据包截获到,然后不断的去请求验证码的正确与否,从0000-9999,全部测试一遍,其中1234 ...
支付漏洞及cookie脆弱性
支付漏洞简介
支付漏洞在漏洞中一直是处于高风险漏洞,对于企业来说相应的危害是很大的,同样对于用户的风险也很大的,比如当攻击者通过修改,使用他人账号的余额进行购买,那么就属于支付中的越权漏洞了。
购买流程:选择商品和数量——产生订单——选择邮寄地址及支付方式——订单支付——完成支付。
支付漏洞就是针对以上流程进行越权操作
支付漏洞分类修改支付价格
对于修改支付价格,通常来说购买一件物品需要选中自己所需购买的物品,其次确认相关的信息,最后支付价钱,而在这个过程中,可以在选中时就修改价格,若有相关的验证,则可以向后边退,一步一步测试。
修改支付状态
其实这里的支付状态挺好理解的,把支付未成功修改为支付成功即可,这个也是由于支付的状态未和实际订单的支付状态进行校验而产生的。
修改购买数量
在支付的过程中,数量也同时决定着价格,比如:1个数量商品对应的是100,2个数据就是200,那么当你修改这个值数量值为负数时,那么其金额也会变为负数,最后就会导致支付问题的产生。
替换支付
替换支付简单来说,首先去产生两个订单,但是这两个订单的商品是不一样的,其价格也是不一样的,如果服务端未做好相应的 ...
逻辑越权
简介
逻辑越权漏洞就是当用户跳过自己的权限限制,去操作同等级用户或者上级用户。正常的情况下,当一个用户去访问某个资源的时候,首先需要去登录验证自己的权限,其次是对数据的查询,最后返回数据内容。
但是如果在权限验证这里,出现了验证不足或者根本就没有验证,那么就会导致越权漏洞的出现。并且逻辑越权又分为水平越权和垂直越权。
逻辑越权主要是由于开发人员在对数据的增删改查的对人员客户端的请求数据过分相信,未对其进行权限判定而导致的问题。
水平越权原理
水平越权也就是同等级越权,可以理解为本来A只能够看自己的工资,而通过更换某个ID或者其他的验证身份的操作,就能够A去看B的工资。
水平越权多数会出现在和数据库进行增删改查的地方,若用户在对其进行信息修改的时候,后台没对其进行严格的校验的话或者校验的规则较简单的情况下,就可能会出现越权漏洞。
水平越权的危害可以导致用户的个人信息泄露,冒充别人等。
实例
使用pikachu靶场进行实例演示
在提示中随便选择一个用户登录
这里选择了lucy
登录之后可以查看个人信息
抓包然后发现是直接username获取个人信息
直接修改username为另一个人 ...