Comments (4)
太强了
from secguide.
1、问题描述
java 代码安全规范的【1.1.1 条】 SQL语句默认使用预编译并绑定变量 需补充2、解决建议
应补充下列编码规范:
- 在 Mybatis 中除了极为特殊的情况,应禁止使用 $ 拼接sql。
- 所有 Mybatis 的实体bean对象字段都应使用包装类,防止 null 的二义性问题。
// 数据搜索时,编码注意要点 // 1)校验搜索数据的业务逻辑:例如搜索用户手机号,应限制输入数据只能输入数字,防止出现搜索英文或中文的无效搜索 // 2)mybatis预编译不会转义 % 符号,应阻止用户输入 % 符号以防止全表扫描 // 3)输入数据长度和搜索频率应进行限制,防止恶意搜索导致的数据库拒绝服务 <select id="getArticles" resultType="Article"> SELECT * FROM article WHERE 1 <if test="searchKeywordType == 'title'"> AND title LIKE CONCAT('%', #{searchKeyword}, '%') </if> ORDER BY id DESC </select>// 编写 order by 时应使用内置指令,防止$拼接导致sql注入 <select id="findAllList" resultType="Article" > SELECT * FROM article ORDER BY <choose> <when test="page !=null and page != ''"> #{page} asc </when> <otherwise> time desc </otherwise> </choose> </select>
关于“编写 order by 时应使用内置指令,防止$拼接导致sql注入”下面的代码, 这个虽然能防止sql 注入,但是会导致程序会无法正确按传入的指定列进行排序了,也就是会把传入的列当成字符串,sql 执行就会非预期。
from secguide.
1、问题描述
java 代码安全规范的【1.1.1 条】 SQL语句默认使用预编译并绑定变量 需补充
2、解决建议
应补充下列编码规范:
- 在 Mybatis 中除了极为特殊的情况,应禁止使用 $ 拼接sql。
- 所有 Mybatis 的实体bean对象字段都应使用包装类,防止 null 的二义性问题。
// 数据搜索时,编码注意要点 // 1)校验搜索数据的业务逻辑:例如搜索用户手机号,应限制输入数据只能输入数字,防止出现搜索英文或中文的无效搜索 // 2)mybatis预编译不会转义 % 符号,应阻止用户输入 % 符号以防止全表扫描 // 3)输入数据长度和搜索频率应进行限制,防止恶意搜索导致的数据库拒绝服务 <select id="getArticles" resultType="Article"> SELECT * FROM article WHERE 1 <if test="searchKeywordType == 'title'"> AND title LIKE CONCAT('%', #{searchKeyword}, '%') </if> ORDER BY id DESC </select>// 编写 order by 时应使用内置指令,防止$拼接导致sql注入 <select id="findAllList" resultType="Article" > SELECT * FROM article ORDER BY <choose> <when test="page !=null and page != ''"> #{page} asc </when> <otherwise> time desc </otherwise> </choose> </select>关于“编写 order by 时应使用内置指令,防止$拼接导致sql注入”下面的代码, 这个虽然能防止sql 注入,但是会导致程序会无法正确按传入的指定列进行排序了,也就是会把传入的列当成字符串,sql 执行就会非预期。
哦我写错了,在原文里改好了,我在github上和作者讨论过,作者认为要么用choose标签要么用java层面进行逻辑判断。
from secguide.
1、问题描述
java 代码安全规范的【1.1.1 条】 SQL语句默认使用预编译并绑定变量 需补充
2、解决建议
应补充下列编码规范:
- 在 Mybatis 中除了极为特殊的情况,应禁止使用 $ 拼接sql。
- 所有 Mybatis 的实体bean对象字段都应使用包装类,防止 null 的二义性问题。
// 数据搜索时,编码注意要点 // 1)校验搜索数据的业务逻辑:例如搜索用户手机号,应限制输入数据只能输入数字,防止出现搜索英文或中文的无效搜索 // 2)mybatis预编译不会转义 % 符号,应阻止用户输入 % 符号以防止全表扫描 // 3)输入数据长度和搜索频率应进行限制,防止恶意搜索导致的数据库拒绝服务 <select id="getArticles" resultType="Article"> SELECT * FROM article WHERE 1 <if test="searchKeywordType == 'title'"> AND title LIKE CONCAT('%', #{searchKeyword}, '%') </if> ORDER BY id DESC </select>// 编写 order by 时应使用内置指令,防止$拼接导致sql注入 <select id="findAllList" resultType="Article" > SELECT * FROM article ORDER BY <choose> <when test="page !=null and page != ''"> #{page} asc </when> <otherwise> time desc </otherwise> </choose> </select>关于“编写 order by 时应使用内置指令,防止$拼接导致sql注入”下面的代码, 这个虽然能防止sql 注入,但是会导致程序会无法正确按传入的指定列进行排序了,也就是会把传入的列当成字符串,sql 执行就会非预期。
哦我写错了,在原文里改好了,我在github上和作者讨论过,作者认为要么用choose标签要么用java层面进行逻辑判断。
👍 看了你好多的修订意见挺不错的。
from secguide.
Related Issues (20)
- 专家建议增加一份C#的 HOT 3
- #java# 规范 1.6 OS命令执行 修订建议
- 希望增加一份iOS的代码安全指南 HOT 1
- C,C++安全指南.md 修改建议
- #C,C++# rand() 类函数应正确初始化 修改建议
- 想问一下后续有考虑做PHP的安全开发指南的想法吗
- #Python# 规范 通用类 1.9.3条 描述不清晰 HOT 2
- #go 规范# 1.2.1 语病 HOT 1
- #go# 规范 1.1.9 条 “slice是引用类型,在作为函数入参时采用的是地址传递” 勘误 HOT 3
- c# 指南 HOT 1
- PHP安全指南 HOT 2
- C ++安全指南.md 修改建议
- NET安全指南??
- #C,C++# 指南4.3条修订建议
- Go安全编码1.3.1 通过黑名单校验命令注入不可靠
- "CONTRIBUTING.md"文件中“提交请求”链接失效
- Request - English version
- C/C++安全指南建议 HOT 2
- C/C++ guide log_m_essage HOT 1
- 没有PHP的安全指南是什么意思 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from secguide.