URL 重定向到不受信任的站点

Posted

技术标签:

【中文标题】URL 重定向到不受信任的站点【英文标题】:URL Redirection to Untrusted Site 【发布时间】:2021-02-07 04:26:32 【问题描述】:

我在 service.ts 文件中有以下代码并且 VeraCode 代码扫描失败

CWE ID 的缺陷: ('Open Redirect')(CWE ID 601)(16 个缺陷) 描述 Web 应用程序接受一个不受信任的输入,该输入指定一个指向外部站点的链接,并使用该链接生成重定向。这会导致网络钓鱼攻击。

请帮我解决这个问题

Service.ts:

public exportReviews(searchReviewData: SurveillanceReviewSearchViewModel): Observable<SurveillanceReviewSearchViewModel> 
    this._urlSurveillanceDetails = this.baseHref +"/ReviewProfile/ExportReviews";
    const headers: HttpHeaders = new HttpHeaders();
    headers.append('Content-Type', 'application/json');
    return this.http.post<SurveillanceReviewSearchViewModel>(this._urlSurveillanceDetails, searchReviewData,  headers: headers ); // flaw identified on this line
  

public getReviewsBySearchSessionId(searchsessionId): Observable<SurveillanceReviewSearchViewModel> 
    this._urlSurveillanceDetails = this.baseHref + "/ReviewProfile/SearchReviewsBySessionId" + '?searchsessionId=' + searchsessionId;
    var headers = new HttpHeaders();
    headers.append('Content-Type', 'application/json');
    this._urlSurveillanceDetails = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, this.sanitizer.bypassSecurityTrustResourceUrl(this._urlSurveillanceDetails));
    return this.http.post<SurveillanceReviewSearchViewModel>(this._urlSurveillanceDetails, headers); // flaw identified on this line
  

【问题讨论】:

确保在传递searchReviewData 中的数据之前对其进行清理。 @RichardBarker - 我尝试在“getReviewsBySearchSessionId”功能中进行清理,但我在下一行仍然遇到同样的问题。我更新了问题部分的代码。 【参考方案1】:

这是误报。请求 url 通常不是根据不受信任的用户输入或用户输入构建的。静态代码分析并不完美,您会到处遇到误报。

【讨论】:

我相信这是真的,只是 OP 正在将用户输入传递给该服务,这可能会打开其他攻击媒介。 @RichardBarker 是的,他将不受信任的输入作为正文传递,但不是作为 URL。与 URL 不同,控制正文通常不被视为安全漏洞,除非有特定的其他情况。【参考方案2】:

您可以使用 encodeURI() 方法对在 CWE-601 下检测到的参数进行编码,正如其他人提到的那样,它可能是误报,但是 encodeURI() 包装了参数,因此 Veracode 不会将其检测为安全漏洞。

【讨论】:

以上是关于URL 重定向到不受信任的站点的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.Net MVC3 中重定向到不影响 URL 的区域

.htaccess 重定向仅在浏览器警告后执行

使用 URL 重定向站点防止 Telegram 链接预览

Laravel - 以 .php 结尾的重定向捕获/重定向 URL

在codeigniter中将站点url http重定向到https

站点核心 301 重定向 iis 7