데이터를 이스케이프 처리하지 않지만 실제로는 OWASP 권장 접근 방식의 예입니다.
입력에서 숫자를 제외하고 모두 제거하면 White list을 구현하여 효과적으로 SQL 인젝션을 방지 할 수 있습니다. 결과 문자열 (이 특정 사례)을 효과적인 SQL 인젝션 페이로드로 만들 수있는 편집증은 없습니다.
코드는 변경 될 수 있으며 새로운 개발자가 상속하므로 오해됩니다. 따라서 결론, 올바른 조언, 모두 끝 그리고 모두 -는 다음 세 단계 중 하나 이상을 통해 SQL 주입에 대해 적극적으로 방지하는 것입니다. 이 순서대로. 이제까지. 단일. 시각.
- 안전한 데이터베이스 API를 사용하십시오. (prepared statement 또는 예를 들어 매개 변수화 된 쿼리)
- db 특정 이스케이프 또는 이스케이프 루틴을 사용하십시오 (
mysql_real_escape_string
이이 범주에 속합니다).
- White list 허용되는 입력 값의 도메인. (제안 된 숫자 솔루션이이 범주에 속합니다.)
mysql_real_escape_string
은 모든 anti-sql-injection에 대한 대답이 아닙니다. 가장 강력한 방법은 아니지만 작동합니다. 숫자 이외의 모든 부분을 제거하는 것은 안전한 값을 나열하는 흰색이며 좋은 생각입니다.하지만 안전한 API를 사용하는 것만 큼 좋은 것은 아닙니다.
+1 절대 경계하지 마십시오. –