是否有库或可接受的方法来清理html页面的输入?
在这种情况下,我有一个只有姓名,电话号码和电子邮件地址的表单.
代码必须是C#.
例如:
""
应该成为 "John Doe"
这是一个较旧但仍然相关的问题.
我们正在使用HtmlSanitizer .Net库,其中:
是开源(MIT) - GitHub链接
积极维护
没有像Microsoft Anti-XSS库这样的问题,
使用OWASP XSS Filter Evasion Cheat Sheet进行单元测试
是专门为此而构建的(与HTML Agility Pack相比,它是一个解析器 - 不是消毒剂)
不使用正则表达式(HTML不是常规语言!)
也在NuGet上
根据您对此答案的评论,您可能会在此问题中找到一些有用的信息: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
如果通过清理你的意思是完全删除标签,那么Bryant引用的RegEx示例就是你想要的解决方案类型.
如果您只是想确保代码不会弄乱您的设计并呈现给用户.您可以使用HttpUtility.HtmlEncode方法来防止这种情况!
使用Microsoft Anti-Cross Site Scripting Library怎么样?