变量的约定做法(Agreed practice)
变量的使用可以随意,使用时只需要注意符合yaml的规范能够被正确解析即可。但是为了规范和统一,我们一定也会有以下的约束- 变量一律采用驼峰命名,一些固定变量命名方式保持一致, 如反连平台相关变量
reverse: newReverse
reverseURL: reverse.url
reverseDomain: reverse.domain
使用中的常见问题(Common problem)
下面小结的标题后会带有类型注释,表示在给出的类型中这些情况大多都会存在,需要我们在编写的过程中多加小心
未经处理的变量(int/string)
- 可以将原变量处理后(md5/base64/…)后,再进行匹配
- 使用多个变量进行加/减/乘后,再进行匹配
- 不要直接在body中进行匹配,也许可以尝试在header等不常规的地方使用随机内容进行匹配
处理后过弱的变量(int)
( r1 - r2 )
( r1 - r2 )
r1, r2 随机范围一定不同,且r1的随机范围要远小于r2
例如:r1: randomInt(1, 10), r2: randomInt(800000000, 1000000000)
( r1 + r2 )
( r1 + r2 )
随机值应该在100000000到1000000000之间,准确来说,r1和r2的数值应该在1073741823以内,也就是相加后不要超过32位,以便应对不同的目标
( r1 * r2 )
( r1 * r2 )
推荐使用四位数*五位数,r1, r2的乘积应该在9位数,一是防止位数过小导致误报,而是防止位数过大导致32位的目标溢出
恰好相同的随机变量(int/string)
这种情况也许不多见,但是是发生过的例子
变量间的引用(Quote)
s2
的值是 base64s1
的值加上 AAA
。由此可知,在set中,引用一个变量的值,不需要使用{{}}
将变量包裹起来,直接使用变量名称即可。从这个规则我们也可以引申出,在expression、output中,引用变量的值,也不需要使用{{}}
将变量包裹起来,直接使用变量名称即可。