传统主义者认为,与使用NHibernate等对象关系映射(ORM)框架相比,存储过程提供了更好的安全性.
为了反驳这个论点,NHibernate可以使用哪些方法来确保适当的安全性(例如,防止sql注入等)?
(每个答案只提供一种方法)
保护您的连接字符串.
从.NET 2.0和NHibernate 1.2开始,在配置文件中使用加密连接字符串(和其他应用程序设置)很容易.将您的连接字符串存储在
块中,然后使用NHibernate connection.connection_string_name
属性而不是connection.connection_string
.如果您运行的是网站而不是Windows应用程序,则可以使用aspnet_regiis
命令行工具加密
块,同时将其余的NHibernate设置保留为纯文本以便于编辑.
另一种策略是,如果数据库平台支持,则使用集成身份验证进行数据库连接.这样,您(希望)不会在配置文件中以明文形式存储凭据.
实际上,如果使用SQL或HQL构建查询,NHibernate可能容易受到SQL注入攻击.如果您需要这样做,请确保使用参数化查询,否则您将为自己设置一个痛苦的世界.