防止XSS攻击表单

苏莱曼·阿迪约

全部:

我正在使用C#MVC4的项目遇到问题

在项目中,我接受用户的URL和其他参数,然后进行一些处理并将处理结果发送到用户提供URL

使用以下代码发送结果:

var context = HttpContext.Current;

context.Response.Write("<html><head>");
context.Response.Write("</head><body>");

context.Response.Write(string.Format("<form name=\"myform\" method=\"post\" action=\"{0}\" >", postUrl));

context.Response.Write("</form>");
context.Response.Write("<script type=\"text/javascript\">document.myform.submit();</script></body></html>");

context.Response.Write("</body>");
context.Response.Flush();
context.Response.Clear();
context.ApplicationInstance.CompleteRequest();

每当用户尝试像传递javascript%3aalert('xss')%2f%2f的url值之类的XSS时,JavaScript就会运行并显示弹出窗口。

在将URL传递给string.Format之前,我曾尝试过Antixss.HtmlEncode()对URL进行编码,但仍然无法正常工作。我也尝试过Antixss.UrlEncode(),但这会导致错误,因为表单未提交到URL。

请帮帮我,我有什么想念的吗?我还可以做些什么?

提前致谢。

银光狐狸

您将需要一种三管齐下的方法来解决此问题。

防止XSS注入:

请注意,如果用户注入了url值

" /> <script>alert('xss')</script>

这也会使您容易受到攻击:

<form name="myform" method="post" action="" /> <script>alert('xss')</script>" >

因此,您应该使用该HttpUtility.HtmlAttributeEncode函数来解决这一问题。

但是,不要停在那里。如前所述,您应该针对javascript:样式URL进行投影为此,我将确保URL以http://开头https://如果不是,则抛出一个SecurityException应该在服务器端记录和处理的,并向用户显示一个自定义错误页面。

最后,您想防御公开重定向漏洞这是通过将用户重定向到其他域来阻止网络钓鱼攻击。同样,请使用白名单方法,并确保重定向到的域是您自己的域之一。在这里进行解析时要小心,因为它很容易弄错-URLhttp://example.org?http://example.com将会通过验证过滤器,用于example.com许多写得不好的验证例程。我建议Uri在.NET中使用该对象并通过该对象检索域,而不是滚动自己的字符串函数。

您还可以检查该URL是否是相对URL,并在可接受的情况下允许它。使用类似此功能的功能该功能使用内置的.NET库来确保它是相对的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止JSP中的XSS攻击

来自分类Dev

href安全性,防止xss攻击

来自分类Dev

防止XSS攻击并正确编码字符

来自分类Dev

如何防止XSS攻击(php / pdo)

来自分类Dev

如何防止RESTful服务免受XSS攻击

来自分类Dev

防止XSS攻击并正确编码字符

来自分类Dev

在 Spring MVC 中防止 XSS 攻击

来自分类Dev

Antisamy或内容安全策略,或同时用于防止XSS攻击

来自分类Dev

Angular-如何防止RxJs fromEvent中的XSS攻击?

来自分类Dev

如何防止Django REST API CharFields中的XSS攻击?

来自分类Dev

Antisamy或内容安全策略,或同时用于防止XSS攻击

来自分类Dev

以下哪种方式可以更好地防止 XSS 攻击?

来自分类Dev

Angular 2+清除XSS攻击的表单输入

来自分类Dev

如何防止XSS用于表单操作URL?

来自分类Dev

如何应对XSS攻击

来自分类Dev

模拟XSS攻击无效

来自分类Dev

XSS攻击:替代OWASP?

来自分类Dev

如何应对XSS攻击

来自分类Dev

XSS攻击媒介

来自分类Dev

Mysqli-参数化查询是否足以防止XSS二阶攻击?

来自分类Dev

在数据库中保存实际值的同时防止Java Web App中的XSS攻击

来自分类Dev

对Popover进行Bootstrap XSS攻击

来自分类Dev

防止请求重播攻击

来自分类Dev

防止攻击网站

来自分类Dev

如何防止DOS攻击?

来自分类Dev

在ASP.NET Web表单中防止对Ajax请求的crf攻击

来自分类Dev

防止ASP.NET Web表单中的跨站点请求伪造(CSRF)攻击

来自分类Dev

jQuery表单防御攻击

来自分类Dev

我是否需要在 HTML 表单中使用 htmlspecialchars() 用户输入来防止 XSS?