{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

如何防止sql恶意注入?

lewiflewif 回答4 收藏1
收藏问题

4条回答

Alliot

Alliot

回答于2022-06-22 19:34

1
评论0 赞同0
  •  加载中...
Julylovin

Julylovin

回答于2022-06-22 19:34

1.凡事涉及到用户输入操作的必须前后端检验,尽可能限制输入的范围,例如排除特殊字符

2. 数据库必须只能内网访问,涉及到sql操作必须使用预编译,防止sql直接提交到数据库,例如mybatis的#占位符,而不是$

3. 鉴权:所有涉及到面向客户的操作须鉴权,防止出现暴力破解情况,核心接口可做访问统计,限流控制,错误信息个性化定制,不暴露内部信息,一般使用内部约定的错误码等形式

评论0 赞同0
  •  加载中...
CntChen

CntChen

回答于2022-06-22 19:34

第一,项目分层处理!逻辑层和数据层严格分开,不要随意暴露数据表结构!

第二,对用户输入进行验证,对客户输入的数据进行参数化查询!

评论0 赞同0
  •  加载中...
Vicky

Vicky

回答于2022-06-22 19:34

1. 能不用sql语句就不用

比如很多orm 框架或库都将sql语句操作隐藏起来了,你直接 new 一个对象,然后insert. 或 update. 从数据库取出来也是一个对象。

2. 非要用sql,尽量用预编译

预编译的流程是先预编译,然后绑定执行。 绑定时不会发生直接执行sql语句的注入问题

3. 即使用非预编译的sql 也有周边工具防止注入

工具就自己找吧,多的是。如 java 的 mybatis 的 sql类,xml中的#{},go语言内置库中的多参数 exec 方法等等

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<