我在RESTful API后面使用Korma,并且我想到我正在将用户提交的值传递给我的(insert)
调用。Clojure中是否有一个很好的方法来防止SQL注入攻击?Korma以一种非常直接的方式生成SQL,所以如果有人告诉我他们的名字是little Bobby Tables,我担心这会伤害到我。
这是我的理解,Korma总是生成参数化的SQL,至少对于选择和插入(我没有亲自测试过其他),所以小婴儿表应该是好的。
仔细地检查这些值如何从数据库返回。对DB输入进行消毒并不能防止CSRF/XSS等攻击。当使用Clojure和DB <-> web交互时,我使用的规则是所有系统组件必须以一种对链中的下一个服务器安全的方式编码数据,并且在环中间件中预先检查逻辑约束(如最大搜索大小)。
安全是一场猫/老鼠的军备竞赛,没有什么可以替代测试这些东西。继续将Little Baby Tables放入每个查询中,并尝试所有您能想到的编码和多重编码组合。展示漏洞有时是帮助同事学会发现这些问题的相当有效的方法(只是不要表现得像个混蛋)