sql 주입 공격 과 django 어떻게 sql 주입 방지

sql 주입 공격
SQL 주입 공격 은 해커 가 데이터 베 이 스 를 공격 하 는 데 자주 사용 되 는 수단 중 하나 이다.B / S 모델 응용 개발 이 발전 함 에 따라 이런 모델 로 응용 프로그램 을 작성 하 는 프로그래머 도 점점 많아 지고 있다.그러나 프로그래머 의 수준 과 경험 도 들쭉날쭉 하기 때문에 상당 한 프로그래머 들 이 코드 를 작성 할 때 사용자 가 입력 한 데이터 의 합 법성 을 판단 하지 않 아 프로그램 에 안전 위험 이 존재 합 니 다.사용 자 는 데이터베이스 조회 코드 를 제출 하여 프로그램 이 돌아 온 결과 에 따라 그 가 알 고 싶 은 데 이 터 를 얻 을 수 있 습 니 다. 이것 이 바로 SQL Injection, 즉 SQL 주입 입 니 다.
SQL 주입 공격 은 데이터 베이스 안전 공격 수단 중 하나 로 데이터 베이스 안전 보호 기술 을 통 해 효과 적 인 보 호 를 실현 할 수 있다. 데이터 베이스 안전 보호 기술 은 데이터 베이스 누 출, 데이터 베이스 암호 화, 데이터 베이스 방화벽, 데이터 탈 민, 데이터 베이스 안전 감사 시스템 을 포함한다.
SQL 주입 공격 으로 인 한 데이터베이스 안전 위험 은 라 이브 러 리, 라 이브 러 리, 라 이브 러 리 충돌 을 포함한다.
Django 에서 SQL 주입 을 방지 하 는 방법
프로젝트 1 은 항상 Django 가 가지 고 있 는 데이터베이스 API 를 사용 합 니 다.이것 은 당신 이 사용 하 는 데이터베이스 서버 (예 를 들 어 PostSQL 또는 MySQL) 의 변환 규칙 에 따라 특수 한 SQL 파 라미 터 를 자동 으로 변환 합 니 다.이것 은 전체 Django 데이터베이스 API 에 사 용 됩 니 다. 예외 만 있 습 니 다. extra () 방법 에 전 달 된 where 매개 변수 입 니 다.(부록 C 참조) 이 매개 변 수 는 원본 SQL 을 받 아들 일 수 있 도록 의도 적 으로 설계 되 었 습 니 다.바 텀 데이터베이스 API 를 사용 한 조회.
프로젝트 2 아래 Python 코드 보기:
from django.db import connection
 
def user_contacts(request):
    user = request.GET['username']
    sql = "SELECT * FROM user_contacts WHERE username = %s"
    cursor = connection.cursor()
    cursor.execute(sql, [user])

# ... do something with the results

cursor. execute () 의 SQL 문장 에 '% s' 를 사용 하고 SQL 에 인 자 를 직접 추가 하지 않도록 주의 하 십시오.이 기술 을 사용 하면 데이터베이스 기초 라 이브 러 리 에 따옴표 가 자동 으로 추가 되 고 필요 한 상황 에서 파 라 메 터 를 바 꿀 것 입 니 다.

좋은 웹페이지 즐겨찾기