Javascript 约束文本输入,以便在html页面中使用Web API时排除html或脚本
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
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}
查找数字。参考: