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 的区域
Laravel - 以 .php 结尾的重定向捕获/重定向 URL