> 백엔드 개발 > 파이썬 튜토리얼 > SQLite에서 동적 테이블을 안전하게 만드는 방법은 무엇입니까?

SQLite에서 동적 테이블을 안전하게 만드는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-09 12:45:02
원래의
1011명이 탐색했습니다.

How to Create Dynamic Tables in SQLite Safely?

SQLite의 동적 테이블 생성

데이터베이스 관리에서는 유연성과 효율성이 가장 중요합니다. SQLite로 작업할 때 다음과 같은 질문이 생깁니다. SQL 주입 공격에 취약한 문자열 생성자에 의존하지 않고 변수 테이블 이름을 사용할 수 있습니까?

이 경우 목표는 각 별표에 대한 테이블을 생성하는 것입니다. 스타 시뮬레이션. 각 테이블의 이름은 별의 이름에 따라 지정되어야 합니다. 처음에는 문자열 생성자를 사용하는 접근 방식이 포함됩니다.

cursor.execute("CREATE TABLE StarFrame"+self.name+" (etc etc)")
로그인 후 복사

그러나 이는 이상적이지 않습니다. 이 문제를 해결하려면 매개변수 사용을 고려할 수 있습니다.

cursor.execute("CREATE TABLE StarFrame(?) (etc etc)",self.name)
로그인 후 복사

안타깝게도 테이블은 매개변수 대체 대상이 될 수 없습니다. 따라서 이 접근 방식은 실현 가능하지 않습니다.

대신 주입 공격으로부터 보호하기 위해 삭제 기능을 사용할 수 있습니다. 이 기능은 특수 문자를 필터링하고 테이블 이름에 영숫자만 포함되도록 합니다.

def scrub(table_name):
    return ''.join( chr for chr in table_name if chr.isalnum() )

table_name = scrub(self.name)
cursor.execute(f"CREATE TABLE StarFrame{table_name} (etc etc)")
로그인 후 복사

이 접근 방식을 사용하면 보안 위협으로부터 보호하면서 동적 테이블을 생성할 수 있습니다. 잠재적인 주입 벡터를 제거함으로써 데이터베이스 무결성을 유지하고 악의적인 행위자가 애플리케이션을 악용하는 것을 방지합니다.

위 내용은 SQLite에서 동적 테이블을 안전하게 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿