ORM 框架能自动防止SQL注入攻击吗

如题所述

ORM,接口封装在 ORM 机制内部,不对外暴露,理论上防止了 SQL 注入。
但是,外界访问你的网站不可能直接使用你的对象接口,也就是说你还要提供一个从 on-wire protocol 到你的对象接口的转换。
这个转换的 decode/encode(或者叫做 serialize/deserilize 或者 parsing)也同样存在被 malformat 数据攻击的问题。
你只不过把一个叫做「SQL 注入」的特定攻击变成了你自定义接口格式的攻击而已。

所以,针对 on-wire 数据,避免攻击的方法是尽量减少格式的复杂度和功能(从这个角度说,你的自定义格式应该比 SQL 的复杂度和功能要低,这是好的),而且尽量用形式化方法来定义和解析格式(比如说,用真正的 BNF 和 parsing 来解析 text-plain 数据就比用 blindly-replace 或者 regexp 解析受到攻击的威胁低)。在有些情况下,使用 pre-compiled SQL 来接受参数就更好,因为这时的参数已经无法修改 AST。

所以,这是一个要综合考虑的问题。比如说,你的 ORM 可能很重量级,而降低威胁的能力可能还不如就简单的采用 pre-compiled SQL。

所以不能
温馨提示:答案为网友推荐,仅供参考
相似回答