如何安全防护Azure Application Insights JavaScript SDK连接字符串?
背景说明
微软明确Application Insights的连接字符串不属于安全令牌/密钥,允许明文嵌入前端代码,但这也导致任何人获取该字符串后,都能向你的实例发送垃圾遥测数据。以下是几种实用的防护手段:
配置IP防火墙限制
在Application Insights实例的防火墙设置中,仅允许你的网站服务器、CDN等合法来源的IP范围发送数据。即使连接字符串泄露,非授权IP的请求会被直接拦截。注意若使用动态IP或CDN,需覆盖所有合法出站IP段。通过后端代理转发遥测
不在前端直接暴露连接字符串,而是让前端将遥测数据发送到你自己的后端服务(比如Azure Functions),再由后端统一转发到Application Insights。连接字符串仅保存在后端环境变量中,完全不对外暴露。同时可在代理层添加数据校验、过滤逻辑,拦截明显的垃圾数据。启用数据采样与自定义过滤
在Application Insights配置中设置采样率,只保留一定比例的请求;同时配置自定义过滤规则,比如过滤掉异常高频的页面浏览、不符合网站用户特征的用户代理字符串等。这种方法无法完全阻止垃圾数据,但能降低其影响和成本。添加自定义标识并过滤非法数据
前端初始化SDK时,添加专属的自定义标识(比如你的域名),然后在Application Insights中创建查询或告警规则,过滤掉不带该标识的遥测数据。虽然无法阻止发送,但能快速清理或忽略非法数据。定期轮换连接字符串
若发现垃圾数据侵扰,直接在Azure门户生成新的连接字符串,替换前端的旧字符串。这是事后补救的简单有效方法,适合临时应急。
内容的提问来源于stack exchange,提问作者Roman Gobrei

