Nhibernate/C# - 将 Nhibernate 设置为解码 SQL 之前的所有文本输入?

Nhibernate/C# - Set Nhibernate to decode all text inputs before SQL?

我工作的网站主要是安全数据输入,我使用以下工作流程:

  1. 用户输入文本
  2. JS encodeURI(文本)
  3. Ajax 到 C#
  4. C# 调用 nHibernate 方法
  5. nHiberate 执行 SQL
  6. returns 到 C#
  7. returns 到 JS
  8. JS decodeURI

我想知道是否可以将 nHibernate 设置为在将所有文本字段发送到 SQL 之前对其进行解码,而不必手动解码每个文本字段。我想这样做是因为我在 SQL 中生成的报告包含编码并且不可读。

同样,我正在寻找 nHiberate 的某种全局设置,以便在将它们发送到 SQL 之前解码所有文本字段。

或者在生成报告之前进行解码的方法?

有没有人有什么想法?

当您 set/get 属性 时,您可以创建一个 encode/decode 的自定义类型。您需要从 IUserType 派生并使用 NHibernate 注册您的类型。这是一个加密字符串示例

https://gist.github.com/jasondentler/1170933#file-encryptedstring-cs

或者,您可以编写 EventListeners 并在那里执行 encode/decode。

这是关于 EventListeners 的文档

http://nhibernate.info/doc/nhibernate-reference/events.html

如果我是你,我会走自定义类型路线。它需要维护的代码更少,而且更符合您的需求。