Bobby 테이블:SQL 주입 방지 가이드
Bobby”s school 이 기록을 잃어버린 이유는 무엇입니까?
학교는 분명히 학생이라는 테이블에 학생들의 이름을 저장합니다. 새로운 학생이 도착하면 학교는 그/그녀의 이름을이 테이블에 삽입합니다. 코드고 삽입 다음과 같이 보일 수 있습니다:
첫 번째 라인을 만들 문자열을 포함하는 SQL INSERT statement. $studentName
변수의 내용이 SQL 문에 붙어 있습니다., 두 번째 줄은 결과 SQL 문을 데이터베이스로 보냅니다. 이 코드의 함정은 외부 데이터,이 경우$studentName
의 내용이 SQL 문의 일부가된다는 것입니다.
먼저”s 무 SQL 문은 다음과 같습니다면 우리는 삽입하는 학생 John.
이것은 정확히 우리가 원하는 것:그것은 삽입 존으로 학생들이다.
이제$studentName
를Robert"); DROP TABLE Students;--
로 설정하여 작은 바비 테이블을 삽입합니다., SQL 문은 다음과 같습니다.
이것은 Robert 를 Students 테이블에 삽입합니다. 그러나 이제 INSERT 문 다음에 전체 학생 테이블을 제거하는 DROP TABLE 문이옵니다. 아야!
을 방지하는 방법에 바 테이블
만 있을 방지하는 방법 중 하나는 바비 테이블의 공격
- 를 만들지 않는 SQL 문을 포함한 외부 데이터입니다.
- 매개 변수화 된 SQL 호출을 사용하십시오.
그”의 그것. 잘못된 문자를 이스케이프하려고하지 마십시오. 돈”t 는 그것을 스스로하려고. 매개 변수화 된 명령문을 사용하는 방법을 배우십시오. 언제나,매번.,스트립이 한 가지 결정적으로 잘못되었습니다. 대답은”데이터베이스 입력을 위생 처리”하는 것이 아닙니다. 오류가 발생하기 쉽습니다.피>