asp页面上的XSS

时间:2018-05-25 09:37:03

标签: asp.net entity-framework xss

我有一个网站,其中有许多表单保存到数据库并显示给用户,并且需要允许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
  }
}

1 个答案:

答案 0 :(得分:1)

我宁愿尽快进行清理,以便您可以记录恶意回复并将IP或甚至用户名附加到响应中以供进一步研究。

此外,通过将清理与SaveChanges相结合,您可以做出一些可能在以后证明不正确的断言。

  1. 您将始终使用EF。如果你不再这样做,我希望上帝你不要忘记将卫生方法转移到新的ORM,否则你将不再有XSS保护。
  2. 您的应用程序中没有一个地方可以根据用户输入直接发回响应,而不是通过数据库。如果有任何这样的地方,响应将基于未经过处理的结果,这可能会导致问题(IE:非持久性XSS攻击)。