当前位置:  开发笔记 > 编程语言 > 正文

如何使用C#来清理html页面上的输入?

如何解决《如何使用C#来清理html页面上的输入?》经验,为你挑选了4个好方法。

是否有库或可接受的方法来清理html页面的输入?

在这种情况下,我有一个只有姓名,电话号码和电子邮件地址的表单.

代码必须是C#.

例如:

"" 应该成为 "John Doe"



1> Julian..:

这是一个较旧但仍然相关的问题.

我们正在使用HtmlSanitizer .Net库,其中:

是开源(MIT) - GitHub链接

积极维护

没有像Microsoft Anti-XSS库这样的问题,

使用OWASP XSS Filter Evasion Cheat Sheet进行单元测试

是专门为此而构建的(与HTML Agility Pack相比,它是一个解析器 - 不是消毒剂)

不使用正则表达式(HTML不是常规语言!)

也在NuGet上



2> Joel Coehoor..:

根据您对此答案的评论,您可能会在此问题中找到一些有用的信息:https:
//stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-网站

这是一个参数化查询示例.而不是这个:

string sql = "UPDATE UserRecord SET FirstName='" + txtFirstName.Text + "' WHERE UserID=" + UserID;

做这个:

SqlCommand cmd = new SqlCommand("UPDATE UserRecord SET FirstName= @FirstName WHERE UserID= @UserID");
cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 50).Value = txtFirstName.Text;
cmd.Parameters.Add("@UserID", SqlDbType.Integer).Value = UserID;

编辑:由于没有注入,我删除了处理该问题的部分答案.我离开了基本的参数化查询示例,因为这对于阅读问题的其他人来说可能仍然有用.
--Joel



3> Mitchel Sell..:

如果通过清理你的意思是完全删除标签,那么Bryant引用的RegEx示例就是你想要的解决方案类型.

如果您只是想确保代码不会弄乱您的设计并呈现给用户.您可以使用HttpUtility.HtmlEncode方法来防止这种情况!


为了做到正确,清理HTML是非常棘手的.攻击者可以通过多种方式获取JavaScript代码.考虑一下`点击我,这只是冰山一角.输出HTML编码的用户输入是一种可靠的方法来呈现安全的HTML.

4> 小智..:

使用Microsoft Anti-Cross Site Scripting Library怎么样?

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有