我在RESTful API后面使用Korma,在我看来,我正在将用户提交的值传递给我的(insert)
调用。 Clojure中有没有一种好的方法可以防止SQL注入攻击? Korma以非常简单的方式生成SQL,因此如果有人告诉我他们的名字是little Bobby Tables,我担心它会造成伤害。
最佳答案
据我了解,Korma总是生成参数化的SQL,至少对于选择和插入(我没有亲自测试其他参数),因此Little Baby Tables应该很好。
仔细检查如何从数据库中返回这些值。清理数据库输入并不能保护CSRF / XSS等。在使用Clojure和DB Web交互时,我使用以下规则:所有系统组件都必须以对下一个服务器安全的方式对数据进行编码。链和逻辑约束(例如最大搜索大小)会在环形中间件中预先检查。
安全是一场猫/老鼠军备竞赛,没有替代品可以测试这些东西。继续,将Little Baby Tables放入每个查询中,然后尝试您可以想到的所有编码和多种编码组合。演示漏洞利用有时可能是帮助同事学习发现这些东西的一种非常有效的方法(只是不要太着急)