一、前言
xxx是一款用于前端防御自动化工具的安全网关,核心代码由服务器下发给客户端执行,通过cookie将执行结果带回,再根据js获取的前端数据判断用户是否异常,完成安全检测
二、代码入口
js计算结果通过cookie传给服务器,参数名为:8PHkpr8y、JF7cGtR5、SflKxwRJ
经过调试分析,代码明文存放在ng_dynamic_defend
文件中,核心逻辑位于尾部这几行
三、读取配置
get_global()
函数读取配置信息,放入_global_config
中
window**.**config **=** 'eyJmaW5nZXIiOnsibmFtZSI6IkpGN2NHdFI1In0sImJvdCI6eyJlbmFibGVkIjp0cnVlLCJuYW1lIjoiOFBIa3ByOHkifSwic3VibWl0Ijp7ImVuYWJsZWQiOnRydWUsIm5hbWUiOiJVVmpES082biIsInVybCI6IiJ9LCJ0b2tlbiI6eyJlbmFibGVkIjp0cnVlLCJuYW1lIjoiU2ZsS3h3UkoiLCJ1cmwiOiJqc190ZXN0LmNvbTsiLCJpc19jaGVja191cmkiOnRydWUsImlzX2NoZWNrX2dldCI6dHJ1ZX0sImNvbnRlbnQiOnsiZW5hYmxlZCI6ZmFsc2UsIm5hbWUiOiJTZmxLeHdSSiIsImNvbmZ1c2VfdHlwZSI6IjAifSwic2NyaXB0Ijp7ImlzX2FudGlfZGVidWciOmZhbHNlfX0='**;** **!****function** **(**global**)** **{** **function** _base64_parse**(**e**)** **{** **return** CryptoJS**.**enc**.**Base64**.**parse**(**e**).**toString**(**CryptoJS**.**enc**.**Utf8**)** **}** **function** get_global**()** **{** **var** e **=** _base64_parse**(**global**.**config**),** t **=** JSON**.**parse**(**e**);** _global_config **=** global**.**nY1vq7Gi **=** t **}** **}(**window**);** */** *{* *"finger": {* *"name": "JF7cGtR5"* *},* *"bot": {* *"enabled": true,* *"name": "8PHkpr8y"* *},* *"submit": {* *"enabled": true,* *"name": "UVjDKO6n",* *"url": ""* *},* *"token": {* *"enabled": true,* *"name": "SflKxwRJ",* *"url": "js_test.com;",* *"is_check_uri": true,* *"is_check_get": true* *},* *"content": {* *"enabl