DBIO Basic
DBIO Basic Rule Set
1. SqlInjection
SQL 에 포함된 ${name} 형태의 치환열으로 인해 검증되지 않은 SQL 이 실행될 수 있는 위험이 생깁니다. ${name} 형태의 치환열은 사용해서는 안됩니다.
1 .우선순위: High
2 .심각도: 에러
3 .예시
올바른 예)
SELECT
A.FEDU_DEPT_NO AS feduDeptNo,
A.FEDU_DEPT_NM AS feduDeptNm,
A.FEDU_ADR_CTNT AS feduAdrCtnt
FROM SMP_DEPT_TST A
WHERE A.FEDU_DEPT_NO = #{feduDeptNo}
올바르지 못한 예)
SELECT
A.FEDU_DEPT_NO AS feduDeptNo,
A.FEDU_DEPT_NM AS feduDeptNm,
A.FEDU_ADR_CTNT AS feduAdrCtnt
FROM SMP_DEPT_TST A
WHERE A.FEDU_DEPT_NO = ${feduDeptNo}
2. ProhibitedKeywords
사용을 금지할 키워드를 등록합니다.
1 .우선순위: High
2 .심각도: 에러
3 .예시
4 .옵션
속성 | 값 |
---|---|
키 |
dbio.prohibitedKeywords |
기본값 |
|
설명 |
사용을 금지할 키워드를 등록합니다. |
속성 | 값 |
---|---|
키 |
dbio.specialCharacters |
기본값 |
|
설명 |
사용을 금지할 키워드를 등록합니다. |
3. RestrictDynamicSqlRule
동적 쿼리 사용을 제한합니다.
1 .우선순위: High
2 .심각도: 에러
3 .예시
올바른 예)
SELECT * FROM EMPLOYEE
WHERE 1=1
AND NAME LIKE '%' || #{keyword} || '%'
AND GENDER = #{gender}
올바르지 못한 예)
<select id="search" resultMap="searchVo">
SELECT * FROM EMPLOYEE WHERE 1=1
<if test="searchType != null and searchType != ''">
AND NAME LIKE '%' || #{keyword} || '%'
</if>
<if test="gender != null and gender != ''">
AND GENDER = #{gender}
</if>
</select>
4 .옵션
속성 | 값 |
---|---|
키 |
dbio.allowed.dynamic.sql |
기본값 |
false |
설명 |
동적 쿼리 사용을 허용 옵션입니다. |