[SQL 주입] 블라인드 의 효율 을 어떻게 향상 시 킵 니까?
SQL 주입 하면 안전 한 친구 들 이 다 알 고 있 을 거 라 고 생각 합 니 다. 그럼 오늘 은 블라인드 효율 을 높이 는 방법 에 대해 이야기 해 보 겠 습 니 다.맹 주 는 크게 세 가지 로 나 뉜 다.
불 맹 주
시간 맹 주
잘못 보고 하 다.
효율 을 높이다
보통 블라인드 가 효율 을 높이 면 두 가지 가 있어 요.
조회 횟수 를 줄이다.
조회 의 정확성 을 높이다.
그럼 첫 번 째 방법 은 이분법 입 니 다.
이분법 은 데이터 구 조 를 배 운 사람 이 모두 알 고 있 습 니 다. 문제 풀이 방향 은 다음 과 같은 python 코드 로 소개 하 겠 습 니 다.
def inject(a, list, start, end):
if start == end:
return list[start]
if ord(a) > list[(start+end)/2]:
return inject(a, list, end/2, end)
return inject(a, list, start, end/2)
여기 서 상술 한 코드 를 설명 하 겠 습 니 다.여기 a 는 검색 할 문자 입 니 다. list 는 a - zA - Z0 - 9 와 비교 할 문자열 입 니 다. start 는 시작 이 고 end 는 끝 입 니 다.함수 에 들 어가 면 start 가 end 설명 과 같 으 면 그 문 자 를 되 돌려 줍 니 다. a 의 ascii 값 이 list 의 중간 문자 인 ascii 보다 크 면 a 의 진정한 값 이 list 의 후반 부 에 있 음 을 설명 합 니 다. 따라서 start 는 end / 2 로 변 합 니 다.그렇지 않 으 면 a 의 값 이 list 의 앞부분 에 있 기 때문에 end 는 end / 2 가 됩 니 다.
두 번 째 방법 은 바로 비트 알고리즘 이다.
원 리 는 매번 조회 할 때마다 한 자 리 를 확정 하 는 것 이다. 이런 문 자 는 8 번 만 있 으 면 확정 할 수 있다. 비트 연산 자 & 를 이용 하여 빈 (ascii (a) & 1, 2, 4, 8, 16... 을 통 해 8 비트 바 이 너 리 를 얻 을 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.