1

我一直在尝试从 REST API 获取数据,然后使用逻辑应用将其添加到 Azure 中的 Log Analytics。我的问题是,我似乎需要将请求正文中的某些字符转义到 Log Analytics,因为我收到 400 错误消息:

{“错误”:“无效数据格式”,“消息”:空}

我已经检查过了,JSON 正文无效。

我的 JSON 请求正文如下所示:

{
"assetid": "TBD Assetid",
"vulnid": "@{items('For_each')?['id']}",
"key": "@{items('For_each_3')?['key']}",
"proof": "@{items('For_each_3')?['proof']}",
"since": "@{items('For_each_3')?['since']}",
"status": "@{items('For_each_3')?['status']}
}

实际请求如下所示:

{
"assetid": "TBD",
"vulnid": "adobe-flash-apsb15-11-cve-2015-3096",
"key": "C:\WINDOWS\system32\Macromed\Flash\",
"proof": "<p><p>Vulnerable OS: Microsoft Windows Server 2012 R2 Datacenter Edition<p></p></p><p>Vulnerable software installed: Adobe Flash 17.0.0.188 (C:\WINDOWS\system32\Macromed\Flash\)</p></p>",
"since": "2021-05-10T11:41:03.483Z",
"status": "vulnerable-version"
}

问题似乎是反斜杠和段落元素。

我想转义“key”和“proof”中的反斜杠并删除段落元素。我试图寻找解决方案,但大多数示例都使用静态字符串和替换功能。

有任何想法吗?

4

1 回答 1

0

您可以使用替换功能删除关键参数的转义字符和段落元素

对于关键参数:

replace(variables('string2'),'\',''

您也可以对证明参数使用替换,下面是表达式。

对于证明参数:

replace(replace(replace(variables('string1'),'<p>',''),'</p>',''),'\',''))

这是使用替换功能的示例输出以供参考

在此处输入图像描述

基于上述要求,我们了解到每次添加到证明参数的 html 标记可能会有所不同,如果这种情况“替换函数 ()”对您没有帮助。

要删除这些 html 字符,您可以采用以下 2 种方法中的任何一种:

  1. 使用Html 到文本内容版本连接器
  2. 使用本文所述的Azure 函数。
于 2021-09-13T06:55:47.733 回答