Skip to content

Commit 6c475d9

Browse files
authored
Allow case insensitive comparison of X-Frame-Options (#8993)
1 parent 3e99593 commit 6c475d9

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

tests/NuGetGallery.WebUITests.P2/BasicPages/SecurityHeaderTest.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

4+
using System;
45
using System.Collections.Generic;
56
using Microsoft.VisualStudio.TestTools.WebTesting;
67
using NuGetGallery.FunctionalTests.Helpers;
@@ -23,7 +24,7 @@ public override IEnumerator<WebTestRequest> GetRequestEnumerator()
2324
// Send a request to home page and check for security headers.
2425
var homePageRequest = new WebTestRequest(UrlHelper.BaseUrl);
2526
homePageRequest.ParseDependentRequests = false;
26-
homePageRequest.ValidateResponse += new ValidationRuleFindHeaderText("X-Frame-Options: deny").Validate;
27+
homePageRequest.ValidateResponse += new ValidationRuleFindHeaderText("X-Frame-Options: DENY", StringComparison.OrdinalIgnoreCase).Validate;
2728
homePageRequest.ValidateResponse += new ValidationRuleFindHeaderText("X-XSS-Protection: 1; mode=block").Validate;
2829
homePageRequest.ValidateResponse += new ValidationRuleFindHeaderText("X-Content-Type-Options: nosniff").Validate;
2930
homePageRequest.ValidateResponse += new ValidationRuleFindHeaderText("Strict-Transport-Security: max-age=31536000").Validate;
@@ -32,7 +33,7 @@ public override IEnumerator<WebTestRequest> GetRequestEnumerator()
3233
// Send a request to Packages page and check for security headers.
3334
var packagesPageRequest = new WebTestRequest(UrlHelper.PackagesPageUrl);
3435
packagesPageRequest.ParseDependentRequests = false;
35-
packagesPageRequest.ValidateResponse += new ValidationRuleFindHeaderText("X-Frame-Options: deny").Validate;
36+
packagesPageRequest.ValidateResponse += new ValidationRuleFindHeaderText("X-Frame-Options: DENY", StringComparison.OrdinalIgnoreCase).Validate;
3637
packagesPageRequest.ValidateResponse += new ValidationRuleFindHeaderText("X-XSS-Protection: 1; mode=block").Validate;
3738
packagesPageRequest.ValidateResponse += new ValidationRuleFindHeaderText("X-Content-Type-Options: nosniff").Validate;
3839
packagesPageRequest.ValidateResponse += new ValidationRuleFindHeaderText("Strict-Transport-Security: max-age=31536000").Validate;

tests/NuGetGallery.WebUITests.P2/ValidationRuleFindHeaderText.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using Microsoft.VisualStudio.TestTools.WebTesting;
5+
using System;
56

67
namespace NuGetGallery.FunctionalTests.Helpers
78
{
@@ -12,15 +13,22 @@ public class ValidationRuleFindHeaderText
1213
: ValidationRule
1314
{
1415
private readonly string _findText;
16+
private readonly StringComparison _stringComparison;
1517

16-
public ValidationRuleFindHeaderText(string findText)
18+
public ValidationRuleFindHeaderText(string findText) : this(findText, StringComparison.Ordinal)
1719
{
1820
_findText = findText;
1921
}
2022

23+
public ValidationRuleFindHeaderText(string findText, StringComparison stringComparison)
24+
{
25+
_findText = findText;
26+
_stringComparison = stringComparison;
27+
}
28+
2129
public override void Validate(object sender, ValidationEventArgs e)
2230
{
23-
e.IsValid = e.Response.Headers.ToString().Contains(_findText);
31+
e.IsValid = e.Response.Headers.ToString().IndexOf(_findText, _stringComparison) >= 0;
2432
}
2533
}
2634
}

0 commit comments

Comments
 (0)