限制文本输入,以便在 html 页面中使用 Web API 时排除 html 或脚本

Constrain text input so it excludes html or script when using Web API in html page

一个 html 页面有一个输入员工姓名的文本框,另一个输入员工年龄的文本框和一个保存按钮,单击该按钮会调用 SaveEmployeeData 的 Web API 方法保存数据。 Web API 托管在 asp.net 网站中,其所有方法均使用 C# 编写。

问题

在这种情况下,我如何限制最终用户不在员工姓名和员工年龄文本框中输入任何 html 或脚本?我正在寻找一些可以在下面的代码中应用于这些属性的属性。即使他们确实输入了这样的文本,Web API 也应该以验证错误作为响应。

//Web API method below
public HttpResponseMessage SaveEmployeeData(EmployeeDetails ed)
{
   //code omitted
}

//Type of parameter passed to above Web API method
public class EmployeeDetails
{
    [Required]
    [StringLength(1000,MinimumLength=10)]
    public string FullName { get; set; }
    public int Age { get; set; }

}

更新 1

我尝试了 samir 建议的正则表达式,但它似乎不允许简单的字母输入,如下面的屏幕截图所示。此在线正则表达式测试器的 url 是:http://regex.cryer.info/。因此,认为在这种情况下需要为 Employee Name 值使用另一个正则表达式。

更新 2

我能够使用 samir 建议的正则表达式来工作。

我为允许字母(任何语言)、数字、单撇号、句号和破折号而进行的代码更改如下所示。是我在Full Name属性上应用的正则表达式属性,确保在调用SaveEmployeeData[=]的webapi方法时没有提交html或脚本20=]

   //Type of parameter passed to above Web API method
    public class EmployeeDetails
    {
        [Required]
        [StringLength(1000,MinimumLength=10)]
        [RegularExpression(@"(^[\p{L} .'-(0-9)]+$)", ErrorMessage = "HTML or Script not allowed")]
        public string FullName { get; set; }
        public int Age { get; set; }

    }

我会推荐一些功能强大的东西,如 response 中的特色。

用户键入恶意代码的可能性并不比有人直接向您的 api 发布恶意输入的可能性大。是的,清理和控制用户输入的内容,还要清理发送到您的 api 的内容,然后还要清理和验证您的 api 收到的内容。

有多种方法可以限制 html 文本框中允许的字符。检查 here, and here

我对 API 方面的了解较少。我建议您继续研究,或者希望其他人可以对此进行扩展。

您可以在客户端/服务器端使用正则表达式。

以下正则表达式将验证员工姓名:

"^[\p{L} .'-]+$"

其中,

\p{L} 匹配来自任何语言的任何类型的字母

.'- 允许在员工姓名中使用 space、点、单引号和连字符。

例如

弗朗西斯科·德索萨

埃里克

安德烈

对于年龄,您可以使用以下正则表达式:

"^(0?[1-9]|[1-9][0-9])$"

PHP

中的示例
<?php
$name = "Francisco D'Souza";

if (!preg_match("/^[\p{L} .'-]+$/",$name)) {
    echo "INVALID"; 
}
else
{
    echo "VALID";
}
?>

OUTPUT

VALID // Francisco D'Souza

INVALID // <html>