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

Javascript 约束文本输入,以便在html页面中使用Web API时排除html或脚本,javascript,c#,html,validation,asp.net-web-api2,Javascript,C#,Html,Validation,Asp.net Web Api2,html页面有一个用于输入员工姓名的文本框,另一个用于输入员工年龄的文本框和一个保存按钮,单击该按钮可调用SaveEmployeeData的Web API方法来保存数据。Web API托管在asp.net网站中,其所有方法都用C#编写 问题 在这种情况下,我如何约束最终用户不在员工姓名和员工年龄文本框中输入任何html或脚本?我在下面的代码中寻找一些可以应用于这些属性的属性。即使他们输入了这样的文本,Web API也应该响应验证错误 //Web API method below public H

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为:。因此,我认为在这种情况下,需要使用另一个正则表达式来表示员工姓名值

更新2

我能够让samir建议的正则表达式发挥作用

在我的情况下,允许字母(任何语言)、数字、单撇号、句号和破折号的代码更改如下。我应用于
Full Name
属性的正则表达式属性确保在调用
SaveEmployeeData的web api方法时没有提交html或脚本

   //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; }

    }

我会建议一些强大的特点,在这一点上

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

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


我对API方面的知识不太了解。我建议您继续研究,或者希望其他人可以在这方面进行扩展。

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

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

"^[\\p{L} .'-]+$"
在哪里,

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

”-
允许在员工姓名中使用空格、点、单引号和连字符

例如

弗朗西斯科·德苏扎

埃里克

安德烈

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

"^(0?[1-9]|[1-9][0-9])$"
PHP中的示例

<?php
$name = "Francisco D'Souza";

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

非常好的解决方案。谢谢它可以工作,因为它是服务器端的,所以在这种情况下它是最好的保护。我使用了你的正则表达式,但它总是给出一个错误,即使我输入这样的内容:abcdef。我在employee name属性中添加了这个属性:[RegularExpression(@“^[\\p{L}.-]+$”,ErrorMessage=“HTML或脚本不允许”)]虽然您的想法是正确的,但正则表达式似乎不正确。我对c不太了解,但在PHP中添加了一个工作完美的代码段。请查看我的更新帖子。
\p{L}
将不匹配数字。请尝试
\p{N}
查找数字。参考: