热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

阻止用户以格式

我有一个ASP.NetCore3.0Web应用程序,其中有一个带有多个输入字段的表单。输入字

我有一个ASP.Net Core 3.0 Web应用程序,其中有一个带有多个输入字段的表单。输入字段已绑定到模型,并且已经进行了一些验证。但是,在其中一个字段中,我想限制用户输入URL地址或什至是电子邮件地址(但此刻URL更重要)。

我的想法如下:在服务器端提交表单后,检查该字段中的文本以及该文本是否包含某些URL,以将其删除或使其无效(例如,添加一些空格)。我的目标是因为用户输入将稍后显示在网站上,以限制所有URL处于活动状态或完全显示,因此,如果另一个用户正在检查该输入,则不要欺骗用户单击某些恶意网站链接。

我的问题是:.Net Core 3(或先前版本)上是否已经存在一种机制,可以自动检查用户输入中的URL,然后删除它们,使它们无效或给出验证错误?我本人将自己编写整个逻辑代码,但是如果已经完成(在.Net Core或其他开放源代码库中),那会更好,并且可以节省一些精力。

我还想知道是否有一些自定义验证器,甚至是基本的.Net验证器都在执行此操作。我只在服务器端进行验证是可以的,但是如果有任何机会我们对此进行客户端验证,那就更好了。

到目前为止,我没有任何要显示的特定代码。我对一般情况感兴趣,因此,如果有帮助,您可以想象一个正常的CRUD形式(由VS生成的形式)。

感谢您的帮助。

最好的问候,
艾哈迈德

==编辑==
可能我不够清楚。我有兴趣查看用户输入的文本中是否包含一个或多个URL。如果该文本中有任何URL可以删除它,以某种方式使其无效或给出验证错误。因此,如果用户输入以下文本:


  

“在这里您可以找到一些疯狂的交易-http://crazydeals.com/notsocrazydeals,您可以购买一些高质量的玩具”

要选择这个:


  

“在这里您可以找到一些疯狂的交易-您可以购买一些高质量的玩具”

或这个


  

“在这里您可以找到一些疯狂的交易-h t t p:/ / c r a
  z y d a ls。 c / m / n o t s o c r a z y d a l s,您可以购买一些高质量的玩具。”



正则表达式是解决此问题的最佳方法,也许使用“ https?:。*(?= \ s)”
此代码将从字符串中删除所有url:

Regex regx = new Regex("https?:.*(?=\s)",RegexOptions.IgnoreCase);
MatchCollection matches = regx.Matches(txt);
foreach (Match match in matches) {
txt = txt.Replace(match.Value,"");

您还可以使用RegularExpressionAttribute使基于模式的模型输入无效。这样的属性将在客户端和服务器端均无效。

public class TestModel
{
[RegularExpression(@"^((?!(https?:.*(?=\s))).)*$",ErrorMessage = "URL's are not allowed.")]
public string Text { get; set; }
}

这里是对RegularExpressionAttribute的测试:

[TestMethod]
public void TestNotUrl()
{
var modelFail = new TestModel { Text = "Here you can find some crazy deals - http://crazydeals.com/notsocrazydeals and you can buy some high quality toys" };
var modelPass = new TestModel { Text = "Here you can find some crazy deals - crazydeals.com and you can buy some high quality toys" };
var result = new List();
var cOntext= new ValidationContext(modelFail) { MemberName = "Text" };
var expectNotValid = System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(modelFail.Text,context,result);
var expectValid = System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(modelPass.Text,result);
Assert.IsFalse(expectNotValid,"Expected modelFail.Text not to validate,as it contains a URL.");
Assert.IsTrue(expectValid,"Expected modelPass.Text to validate,as it does not contain a URL.");
}

,

您可以创建自己的验证器,并进行以下验证:

Uri uriResult;
bool result = Uri.TryCreate(uriName,UriKind.Absolute,out uriResult)
&& (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);

参考:

How to check whether a string is a valid HTTP URL?


推荐阅读
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • splitjava的简单介绍
    本文目录一览:1、Javasplit方法2、 ... [详细]
  • 开发笔记:Squid代理服务
    本文由编程笔记#小编为大家整理,主要介绍了Squid代理服务相关的知识,希望对你有一定的参考价值。Squid服务基础缓存代理概述 ... [详细]
  • 本文讨论了一个关于正则的困惑,即为什么一个函数会获取parent下所有的节点。同时提出了问题是否是正则表达式写错了。 ... [详细]
  • 本文介绍了如何使用Python正则表达式匹配MATLAB的函数语法,包括多行匹配和跨行签名的处理方法。同时,作者还分享了自己遇到的问题和解决方案。 ... [详细]
  • PHP引用的概念和用法详解
    本文详细介绍了PHP中引用的概念和用法。引用是指不同的变量名访问同一个变量内容,类似于Unix文件系统中的hardlink。文章从引用的定义、作用、语法和注意事项等方面进行了解释和示例。同时还介绍了对未定义变量使用引用的情况,以及在函数和new运算符中使用引用的注意事项。 ... [详细]
  • 1.Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时 ... [详细]
  • ListBox.SelectedItem.Value可以获取当前被选中的一个值.但如果ListBox同时有多个值被选中应该如何获取这些值呢? ... [详细]
  • 装饰模式(Deocrator)     动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。    所谓装饰,就是一些对象给主题 ... [详细]
  • [AWS DA] Database types & SSL
    YoucanletAWStocreateaSSLcertificatesforyouandmanageforyoubyusingAWSCetrficateManager.Basic ... [详细]
author-avatar
招生咨询1232013
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有