Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 停止从外部发布到Asp.NETWebForm页面的功能_C#_Asp.net_Web Services_Webforms_Csrf - Fatal编程技术网

C# 停止从外部发布到Asp.NETWebForm页面的功能

C# 停止从外部发布到Asp.NETWebForm页面的功能,c#,asp.net,web-services,webforms,csrf,C#,Asp.net,Web Services,Webforms,Csrf,在我们的系统中,我们使用ASP.NETWebForms页面 我们的系统中有一个自注册网页,用户可以在其中注册开始使用我们的系统 我们最近发现,我们的一位客户正在从其网站向该页面发布表单数据,而该网站又在该页面上提交表单 <asp:Hidden ID="Validation" runat="server" /> 我们想阻止这种事情发生。我们不介意他们是否将页面嵌入到IFrame中,因为它无论如何都无法正常工作。但我们需要阻止他们从系统/网站向该页面发布表单数据 是否有我们可以设置的属

在我们的系统中,我们使用ASP.NETWebForms页面

我们的系统中有一个自注册网页,用户可以在其中注册开始使用我们的系统

我们最近发现,我们的一位客户正在从其网站向该页面发布表单数据,而该网站又在该页面上提交表单

<asp:Hidden ID="Validation" runat="server" />
我们想阻止这种事情发生。我们不介意他们是否将页面嵌入到
IFrame
中,因为它无论如何都无法正常工作。但我们需要阻止他们从系统/网站向该页面发布表单数据

是否有我们可以设置的属性或阻止外部发布到该页面的内容?或者是另一种选择,Ajax似乎跃入人们的脑海

不确定要搜索什么,在网上快速搜索了一下,但什么也找不到

想要阻止这种情况的原因:


当该页面出现问题时,试图注册的用户不会从我们的系统收到任何错误消息,因此我们得到了大量的支持。当然,我们可以添加功能来支持,但我们不希望这样。还想防止该页面上的机器人攻击,因为每次提交都会创建一个不存在的用户。

将一些基本的东西滚动到一个隐藏字段中并不难,您可以生成一个Guid,然后检查是否得到相同的Guid,它不如验证码安全,但可以防止在不填写表单的情况下向您发布随机内容,但这并不能阻止那些实际填写表单并在页面上发布的脚本

<asp:Hidden ID="Validation" runat="server" />
然后在回邮检查时,你会得到相同的回邮


或者,看一看。它同时适用于webforms和MVC

显示验证码:

<%@ Register Assembly="BotDetect" Namespace="BotDetect.Web.UI" 
  TagPrefix="BotDetect" %>

  […]

<BotDetect:Captcha ID="SampleCaptcha" runat="server" />
<asp:TextBox ID="CaptchaCodeTextBox" runat="server" />

来自的示例。

滚动一些基本内容并不难,您可以在一个隐藏字段中生成一个Guid,然后检查是否返回相同的Guid,它不像验证码那样安全,但可以防止在不填写表单的情况下向您发布随机内容,但这并不能阻止那些实际填写表单并在页面上发布的脚本

<asp:Hidden ID="Validation" runat="server" />
然后在回邮检查时,你会得到相同的回邮


或者,看一看。它同时适用于webforms和MVC

显示验证码:

<%@ Register Assembly="BotDetect" Namespace="BotDetect.Web.UI" 
  TagPrefix="BotDetect" %>

  […]

<BotDetect:Captcha ID="SampleCaptcha" runat="server" />
<asp:TextBox ID="CaptchaCodeTextBox" runat="server" />

示例来自。

从Visual Studio 2012开始,Microsoft向新的web窗体应用程序项目添加了内置的CSRF保护。若要使用此代码,请将新的ASP.NET Web表单应用程序添加到解决方案中,并查看网站的主控代码隐藏页。此解决方案将对从Site.Master page继承的所有内容页应用CSRF保护

此解决方案必须满足以下要求才能正常工作:

所有修改数据的web表单都必须使用Site.Master页。所有修改数据的请求都必须使用ViewState。网站必须没有所有跨站点脚本(XSS)漏洞。有关详细信息,请参阅如何使用Microsoft.Net Web保护库修复跨站点脚本(XSS)。也看到


从Visual Studio 2012开始,Microsoft为新的web窗体应用程序项目添加了内置的CSRF保护。若要使用此代码,请将新的ASP.NET Web表单应用程序添加到解决方案中,并查看网站的主控代码隐藏页。此解决方案将对从Site.Master page继承的所有内容页应用CSRF保护

此解决方案必须满足以下要求才能正常工作:

所有修改数据的web表单都必须使用Site.Master页。所有修改数据的请求都必须使用ViewState。网站必须没有所有跨站点脚本(XSS)漏洞。有关详细信息,请参阅如何使用Microsoft.Net Web保护库修复跨站点脚本(XSS)。也看到


您是否可以在注册页面中添加验证码功能?我认为除了要求发送/单击验证电子邮件和/或验证码之外,你无法阻止脚本自动填写用户名和密码字段并提交注册。我想显而易见的问题是。。。你为什么一定要防止这种情况?(也就是说,您可能试图解决一个不存在的问题,或者试图解决错误的问题。)向您的页面添加验证码之类的内容至少会让他们很难做到这一点,所以这应该可以解决问题。您是否可以只向您的注册页面添加验证码之类的功能?我认为除了要求发送/单击验证电子邮件和/或验证码之外,你无法阻止脚本自动填写用户名和密码字段并提交注册。我想显而易见的问题是。。。你为什么一定要防止这种情况?(也就是说,你可能试图解决一个不存在的问题,或者试图解决错误的问题。)在你的页面中添加验证码这样的东西至少会让他们很难做到这一点,这样就可以了。