首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏丑胖侠

    以太坊实战-再谈nonce使用陷阱

    在《以太坊实战之如何正确处理nonce》一文中我们介绍了nonce的基本概念和使用方法。也提到了它能够覆盖之前交易的特异功能。但是那只是nonce的冰山一角。 自行管理nonce 自行管理nonce适用于冷热账户模式,也就是适用sendRawTransaction发送已经签名好的交易时,此时nonce值已经存在于交易中,并且已经被签名。 这种模式下,需要在业务系统中维护nonce的自增序列,适用一个nonce之后,在业务系统中对nonce进行加一处理。 此种方案也有限制条件。 第一,由于nonce统一进行维护,那么这个地址必须是内部地址,而且发起交易必须通过统一维护的nonce作为出口,否则在其他地方发起交易,原有维护的nonce将会出现混乱。 第二,一旦已经发出的交易发生异常,异常交易的nonce未被使用,那么异常交易的nonce需要重新被使用之后它后面的nonce才会生效。

    1.4K50编辑于 2022-05-06
  • 来自专栏猿天地

    使用nonce巩固接口签名安全

    基于nonce的方式可以解决重复使用的问题,最开始知道nonce是在广点通的接口中看到的,如下图所示: ? 1.png 可以看到腾讯这边的接口也是基于时间戳和nonce来控制的。 处理HTTP请求时,首先判断该请求的nonce参数是否在存在,如果存在则认为是非法请求。如果不存在则是合法请求,让后将该nonce存储起来,防止下次重复使用。 这种方式的弊端也很明显,那就是nonce的存储会越来越大,验证nonce是否存在的时间会越来越长。 如何解决存储问题? 可以用时间戳+nonce同时使用,相互配合,取长补短。 nonce没使用,存储起来,记录一个存储时间,通过定时任务去清除超过了时间戳验证的时间的nonce。 这样的话我们只需要存储固定时间内的nonce数据,因为时间长的已经被时间戳的判断给拦截了,nonce的验证只需要验证时间有效期内的即可。

    2.2K20发布于 2018-12-24
  • 来自专栏cwl_Java

    快速学习-以太坊并发和nonce

    并发和nonce 以太坊是一个允许操作(节点,客户端,DApps)并发的系统,但强制执行单例状态。例如,出块的时候只有一个系统状态。 如果我们希望它们都够同时发送交易,该怎么设置交易的nonce呢? 用一台服务器为各个应用分配nonce,先来先服务——可能出现单点故障,并且失败的交易会将后续交易阻塞。 生成交易后不分配nonce,也不签名,而是把它放入一个队列等待。另起一个节点跟踪nonce并签名交易。同样会有单点故障的可能,而且跟踪nonce和签名的节点是无法实现真正并发的。

    94110发布于 2020-04-10
  • 来自专栏丑胖侠

    以太坊实战-再谈nonce使用陷阱

    在《以太坊实战之如何正确处理nonce》一文中我们介绍了nonce的基本概念和使用方法。也提到了它能够覆盖之前交易的特异功能。但是那只是nonce的冰山一角。 自行管理nonce 自行管理nonce适用于冷热账户模式,也就是适用sendRawTransaction发送已经签名好的交易时,此时nonce值已经存在于交易中,并且已经被签名。 这种模式下,需要在业务系统中维护nonce的自增序列,适用一个nonce之后,在业务系统中对nonce进行加一处理。 此种方案也有限制条件。 第一,由于nonce统一进行维护,那么这个地址必须是内部地址,而且发起交易必须通过统一维护的nonce作为出口,否则在其他地方发起交易,原有维护的nonce将会出现混乱。 第二,一旦已经发出的交易发生异常,异常交易的nonce未被使用,那么异常交易的nonce需要重新被使用之后它后面的nonce才会生效。

    3.5K100发布于 2018-01-14
  • 来自专栏丑胖侠

    以太坊rpc接口调用之nonce

    导致以上现象的最终原因就是在发送交易时传递的nonce值不对。 nonce使用说明 为了防止交易的重播攻击,每笔交易必须有一个nonce随机数,针对每一个账户nonce都是从0开始,当nonce为0的交易处理完之后,才会处理nonce为1的交易,并依次加1的交易才会被处理 以下是nonce使用的几条规则: 当nonce太小,交易会被直接拒绝。 当nonce太大,交易会一直处于队列之中,这也就是导致我们上面描述的问题的原因; 当发送一个比较大的nonce值,然后补齐开始nonce到那个值之间的nonce,那么交易依旧可以被执行。

    1.3K100发布于 2017-12-29
  • 来自专栏cwl_Java

    快速学习-以太坊交易中的nonce

    交易中的nonce 黄皮书定义: 一个标量值,等于从这个地址发送的交易数,或者对于关联code的帐户来说,是这个帐户创建合约的数量。 nonce不会明确存储为区块链中帐户状态的一部分。 nonce值还用于防止错误计算账户余额。nonce强制来自任何地址的交易按顺序处理,没有间隔,无论节点接收它们的顺序如何。 使用nonce确保所有节点计算相同的余额和正确的序列交易,等同于用于防止比特币“双重支付”(“重放攻击”)的机制。 nonce机制可以防止这种情况发生。

    1.3K10发布于 2020-04-10
  • 来自专栏WordPress果酱

    使用 Nonce 防止 WordPress 网站受到 CSRF 攻击

    WordPress Nonce 的主要工作流程: 首先使用一个唯一的标示符生成 nonce 将生成的 nonce 和链接或者表单中的其他数据一起传递给脚本 在做其他事情之前验证 nonce 首先可以使用 wp_create_nonce() 函数创建 nonce: $nonce= wp_create_nonce('wpjam'); 然后将生成 $nonce 的值作为参数传递给请求中,如: <a href php echo $nonce ?>"> 最后在执行其他动作的时候,使用 wp_verify_nonce() 函数验证下 nonce。 ( 'wpjam'); 在 AJAX 中使用 Nonce 在 AJAX 脚本中 nonce 也是非常容易的,首先使用 wp_create_nonce() 函数创建 nonce: $nonce = wp_create_nonce _ajax_nonce=<?php echo $nonce ?

    1.9K10编辑于 2023-04-13
  • 来自专栏丑胖侠

    以太坊实战之《如何正确处理nonce

    原因解析 为了防止交易重播,ETH(ETC)节点要求每笔交易必须有一个nonce数值。每一个账户从同一个节点发起交易时,这个nonce值从0开始计数,发送一笔nonce对应加1。 当前面的nonce处理完成之后才会处理后面的nonce。注意这里的前提条件是相同的地址在相同的节点发送交易。 以下是nonce使用的几条规则: ● 当nonce太小(小于之前已经有交易使用的nonce值),交易会被直接拒绝。 ● 当nonce太大,交易会一直处于队列之中,这也就是导致我们上面描述的问题的原因; ● 当发送一个比较大的nonce值,然后补齐开始nonce到那个值之间的nonce,那么交易依旧可以被执行。 获取nonce值 经过上面的解释追踪,我们已经了解到了nonce的基本使用规则。那么,在实际应该用中我们如何保障nonce值的可靠性呢?这里有两个思路,第一个思路就是由业务系统维护nonce值的递增。

    2.2K60发布于 2017-12-29
  • 来自专栏Python爬虫与数据分析

    头条 _signature、 __ac_nonce、 __ac_signature参数

    cookie 中的 ac_nonce ac_signature 直接请求详情,不携带 cookie, 会响应 cookie __ac_nonce [image-20201203175421719] [ image-20201203175755230.png-gg] 通过 __ac_nonce 生成 __ac_signature 直接调用上面的方法即可 function f2(__ac_nonce){ ac_signature = window.byted_acrawler.sign("", __ac_nonce); return ac_signature } [image-20201203185022708

    4.4K30发布于 2021-01-14
  • 来自专栏csdn文章同步

    区块链中的nonce值有什么用

    区块链中的nonce值有以下作用: 区块中的nonce值 用来挖矿,随机猜测nonce,直到算出符合条件的hash值,其他节点可以根据nonce验证。 交易中的nonce值 是指from账户发出交易的次数, 从0开始递增,同一账户的交易会被依次确认。有以下几个作用: 确认交易顺序 防止双花 撤销pending中的交易 确定生成的合约地址

    3K20编辑于 2022-06-23
  • 来自专栏LoRexxar's Blog

    通过浏览器缓存来bypass CSP script nonce

    } setTimeout(pollNonce, 1000); function pollNonce() { var nonce = getNonce(); if (nonce /csp/test.php#" var payload = "<script nonce='" + nonce + "'>alert(document.domain)</scr" + "ipt> empty($_POST)){ $message = $_POST['nonce']; preg_match('/(nonce=\')\w+\'/', $message, $matches); $ nonce_number = substr($matches[0], 7, -1); $_SESSION['nonce'] = $nonce_number; echo $nonce_number; empty($_SESSION['nonce'])){ echo $_SESSION['nonce']; } ?

    82720编辑于 2023-02-21
  • 来自专栏FreeBuf

    通过浏览器缓存来bypass nonce script CSP

    script的站,然后包含了因为是利用了浏览器缓存,所以我们不能对页面发起请求,因为发起请求之后,后台就会刷新页面并刷新nonce的字符串,符合条件的只有3种。 payload=) 这里首先我们需要一个开启了nonce script规则的站,并加入一个xss点 ? ? 获取nonce字符串 然后我们需要一个页面去获取nonce字符串,为了反复获得,这里需要开启session。 ? 服务端不但开启了最新版的nonce csp,而且还开启了浏览器缓存 这就让我们有了可乘之机,就如同上面提到的一样,如果我们仅修改location.hash,浏览器不会请求服务器,那么nonce string 那么思路就很清楚了,我们可以在主站构造xss,先开iframe请求admin目录的,获取到nonce值后,再新建一个iframe,添加带有nonce字符串的iframe窗口,执行任意xss ? ?

    1.6K100发布于 2018-02-24
  • 来自专栏Owen's World

    workerman 签名验证中间件 timestamp+nonce+sign 时间戳 + 随机数 + 签名参数接口验证

    [up-ba7490a33255d35afa2c4ec8f805f857a63.png] 简要 timestamp+nonce+sign 时间戳+随机数+签名参数接口验证 保证每次请求都不一样 sign ) { if (empty($nonce)) { return ['code' => ApiStatus::API_ERROR->value, 'msg' => 'random number error']; } if (strlen($nonce) > 16) { return ['code' = ', '-inf', $end); //查看nonce列表 $noncearr = Redis::zRangeByScore('nonce_list', '-inf', '+inf'); if (in_array($nonce, $noncearr)) { return ['code' => ApiStatus::API_ERROR

    2.7K31编辑于 2022-05-30
  • 来自专栏csdn

    x-ca-key,x-ca-nonce,x-ca-signature与x-ca-signature-headers探索

    x-ca-key,x-ca-nonce,x-ca-signature与x-ca-signature-headers探索 请求的curl如下 curl 'https://bizapi.csdn.net/blog-console-api 537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36' \ -H 'x-ca-key: 203803574' \ -H 'x-ca-nonce : '924136a4-5eca-42ba-a675-34036764b896'} , b = c()(s()(_)).sort() //['x-ca-key', 'x-ca-nonce 1// false , x = void 0; //false try { // x-ca-key:203803574\nx-ca-nonce 'POST\n*/*\n\napplication/json\n\nx-ca-key:203803574\nx-ca-nonce:eff837eb-901e-403f-9ed3-d17d0227b16b

    1K00编辑于 2024-05-24
  • 来自专栏吴生的专栏

    Java 实现区块链中的区块,BLOCK的实现

    值是整个区块各个内容整体计算出的hash值 区块6个属性的说明-Previous Hash 前一个区块的hash值 区块6个属性的说明-Data 区块链的数据存储部分,例如比特币是用来存储交易数据 区块6个属性的说明-Nonce (挖矿原理,比特币难度举例) nonce值是形成有效hash的计算出来的 3、区块链区块的代码实现 package cn.wenwuyi.blockchain.pojo;/** * * 类名:Block.java */ private String data; /** * hash值 */ private String hash; /** * nonce = nonce; } public int getIndex() { return index; } public void setIndex(int index ; } public void setNonce(long nonce) { this.nonce = nonce; } } 作者:文武艺 推荐阅读:https:/

    1.5K01发布于 2018-09-15
  • 来自专栏数安视界

    ChaCha20-Poly1305 算法介绍

    生成随机 nonce (12字节) 2. 使用密钥初始化 AES-GCM 3. 用 nonce 和关联数据加密数据 4. ) 返回: 解密后的原始数据(用于验证算法正确性) """ # 生成随机 nonce (96位,这是AES-GCM的标准推荐长度) nonce = os.urandom nonce 和关联数据解密 decrypted_data = aes_gcm.decrypt(nonce , ciphertext , associated_data) return 生成随机 nonce (12字节) 2. 使用密钥初始化 ChaCha20-Poly1305 3. 用 nonce 和关联数据加密数据 4. ) 返回: 解密后的原始数据(用于验证算法正确性) """ # 生成随机 nonce (96位,这是ChaCha20-Poly1305的标准长度) nonce =

    1.6K22编辑于 2025-06-02
  • 来自专栏个人教程

    微信公众号、企业微信应用回调URL验证对比 - 带部分Java示例

    timestamp:时间戳 nonce:随机数 echostr:随机字符串 开发者通过检验 signature 对请求进行校验(下面有校验方式)。 : msg_signature:企业微信加密签名,msg_signature计算结合了企业填写的token、请求中的timestamp、nonce、加密的消息体。 与nonce结合使用,用于防止请求重放攻击。 nonce:随机数。与timestamp结合使用,用于防止请求重放攻击。 echostr:加密的字符串。 同样的请求方式:GET 不同点 计算签名不同 公众号验证回调,token、timestamp、nonce排序并SHA1计算签名并与signature对比。 企业微信应用验证回调,token、timestamp、nonce、echostr排序并SHA1计算签名并与signature对比。

    4K30编辑于 2022-06-15
  • 来自专栏JAVA 知识

    Java 防重放攻击实战:从原理到落地

    :"+nonce);if(exists! ().set("nonce:"+nonce,"USED",6,TimeUnit.MINUTES);//2.写入本地缓存nonceLocalCache.put(nonce,true);}}4.拦截器:统一验证所有核心请求用 ().write("签名无效,请求可能被篡改");returnfalse;}//5.标记Nonce为已使用(验证通过后再标记,减少无效缓存)nonceManager.markNonceUsed(nonce ,timestamp);//4.拼接请求参数(包含nonce、timestamp、signature)params.put("nonce",nonce);params.put("timestamp",String.valueOf :"+nonce,"USED",6,TimeUnit.MINUTES);if(Boolean.FALSE.equals(success)){returnfalse;//Nonce已存在,标记失败}//写入本地缓存

    24710编辑于 2025-12-24
  • 来自专栏友弟技术工作室

    区块链POW证明代码实现demo

    Protocol consensus algorithm) Hcash——PoW+PoS共识机制 这些共识机制,后面有时间会补充上的,今天主要介绍POW pow很简单,原理就是 利用计算力,在选择一个nonce 的值结合区块的数据算出hash,使得hash的前面多少位都是0. nonce是一个用来找到满足条件的hash值的数字,nonce值一直迭代,直到hash值有效为止。 找到nonce值以满足合适条件的hash值的过程就叫做挖矿。 HashInt.SetBytes(hash[:]) //fmt.Println(nonce) // 这里用于 判断算出的hash值(int)只要比最大的IntTarget ++ } } return nonce, hash[:] } // 对block的数据校验 func (pow *ProofOfWork)IsVaild() bool

    1.7K30发布于 2018-10-11
  • 来自专栏友弟技术工作室

    http digest

    digest 不以明文发送密码,在上述第2步时服务器响应返回随机字符串nonce,而客户端发送响应摘要 =MD5(HA1:nonce:HA2),其中HA1=MD5(username:realm:password 服务器应当记住最近所生成的服务器密码随机数nonce的值。也可以在发行每一个密码随机数nonce后,记住过一段时间让它们过期。 需要注意的是,在生成后立刻过期服务器密码随机数nonce是不行的,因为客户端将没有任何机会来使用这个nonce。 == self.last_nonce: self.nonce_count += 1 else: self.nonce_count = 1 ncvalue = '%08x' % self.nonce_count s = str(self.nonce_count).encode('utf-8')

    4.2K90发布于 2018-04-25
领券