我想使用ORM,并且一直在关注EF 4.这个平台是否可扩展.我在网上看到很多东西,但是一切看起来都非常偏向于某种方式.任何人都知道基准或非主观信息.
在这一点上,EF是否会阻止SQL注入或XSS.我知道它使用了参数化查询,但这还够吗?
任何帮助表示赞赏.
好的,我在这里看到两个问题.
EF可扩展
很难(和主观)回答,但IMO是的.
以下是几个原因:
使用通用查询语言(LINQ)
允许多个提供程序(SqlServer,Oracle等)
允许双向映射(代码优先,模型优先,数据库优先)
包括"经典ADO.NET"支持(存储过程,Entity-SQL)
可伸缩性的主要实际好处是如何在LINQ-to-Entities上构建框架.当您编写查询时,您不是针对SQL Server或Oracle编写的,而是针对模型编写.根据您设置的提供程序(在web.config中),EF会将这些模型查询转换为适当的T-SQL(或P-SQL).
因此(理论上),您可以针对SQL Server编写代码,然后将web.config提供程序更改为Oracle,您的代码应该可以正常工作.显然,这不是Entity-SQL的情况(因为你正在编写T-SQL,而不是LINQ).
EF是否会阻止SQL注入或XSS
没有ORM工具可以真正"防止"SQL注入攻击 - 它们只能为开发人员提供防止它的工具.
与使用参数化查询的经典ADO.NET一样,Entity Framework具有Entity-SQL,允许执行预生成的SQL,存储过程等.
在这种情况下,您需要使用参数化查询来防止SQL注入.对于大多数EF工作,您将使用LINQ编写查询,这更加安全,因为它在成为SQL之前会经过很多阶段的补充.
XSS在客户端被利用,例如注入JavaScript,狡猾的电子邮件等.与Entity Framework无关.使用HTML编码之类的东西在客户端完成XSS的预防.