防止在用户URL输入中使用XSS

问题描述 投票:0回答:1

我有一个带有输入字段的应用程序,该应用程序允许用户提交URL,该URL将显示为页面上的链接。

我希望用户能够提交相对URL以及绝对URL。例如(以下所有内容均应为正确的输入):

https://stackoverflow.com
stackoverflow.com
http://example.com
localhost:1234
localhost
...

我正在尝试防止XSS攻击。这样,当用户在URL输入中提交javascript:alert('hacked')时,它就不起作用。

我正在考虑的方法是简单地在输入之前加上http://前缀(如果它不在输入中)。这样最终结果将是http://javascript:alert('hacked')

在服务器端,我正在使用ASP.NET Core,并且有一个看起来像这样的模型:

using System.ComponentModel.DataAnnotations;

namespace MyApp.Models {
    public class LinkModel {
        [Required]
        public string Title { get; set; }

        [Url]
        public string Url { get; set; }
    }
}

请注意Url属性,当我测试-http://javascript:alert('hacked')时它是“有效的”。这使我相信这是可以的,并且不是XSS攻击媒介。我也在Chrome和Firefox中对其进行了测试,它似乎是“安全的”。

是这样吗?我想念什么吗?在将http://添加到输入之前,将其充分传递到服务器以防止XSS攻击。请让我知道是否可以澄清。

c# asp.net security asp.net-core xss
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.