我有一个网站,其中有许多表单保存到数据库并显示给用户,并且需要允许html。
当前,没有输入再次被XSS攻击消毒。 由于存在大量可以注入脚本或错误代码的表单,因此查找和清理所有输入需要一些时间。
我正在使用实体框架,所以我首先想到的是在db.SaveChanges()之前调用方法,它会检查更改的实体文本字段,然后对它们进行清理。
这种方法有没有重大流程?
public static void SanitizeDbContext(DbEntities db)
{
var changes = from e in db.ChangeTracker.Entries()
where e.State != EntityState.Unchanged
select e;
foreach (var change in changes)
{
//Sanatize if field is string
}
}
答案 0 :(得分:1)
我宁愿尽快进行清理,以便您可以记录恶意回复并将IP或甚至用户名附加到响应中以供进一步研究。
此外,通过将清理与SaveChanges相结合,您可以做出一些可能在以后证明不正确的断言。