我有许多参数构成插入表单,例如:
x.Parameters.AddWithValue("@city", City.Text)
我今天早上在网站上发生了一次失败的xss攻击,所以无论如何我都试图加强安全措施....
我应该像这样添加我的输入参数吗?
x.Parameters.AddWithValue("@city", HttpUtility.HtmlEncode(City.Text))
还有什么我应该考虑避免攻击吗?
不要编码输入.编码输出.在将来的某个时候,您可能决定要使用相同的数据来生成PDF或Word文档(或其他内容),此时您不希望它是HTML.
当您接受数据时,它只是数据.
将数据插入数据库时,需要将其转换为对数据库有意义.
将数据插入HTML文档时,需要将其转换为对HTML有意义.
… 等等.