Wordpress에서 실제로 준비된 문장을 얻으려면 어떻게 해야 합니까?
우리 회사는 인터넷 사이트에 WordPress를 사용하기를 원하는데, 나의 주된 관심사는 준비된 문장을 사용하는 것입니다.이에 따르면 워드프레스는 문자열을 삭제하지만 데이터베이스에 준비되어 있지 않습니다.
진짜를 얻기 위해 제가 할 수 있는 일이 있을까요?아니면 저의 우려는 근거가 없는 것일까요?
역사
원래 Justin Vincent의 ezSQL 라이브러리의 포크였던 클래스는 MySQL이 준비된 스테이트먼트 프로토콜이 출시된 지 불과 몇 달 후 그리고 PHP가 액세스하기 위한 API를 지원하기 1년 전인 2003년에 도입되었습니다.WordPress는 그렇게 할 수 있었던 유일한 것을 이해하십시오.모든 변수를 동적 SQL에 직접 연결해야 했습니다.
그 당시 ezSQL(그리고 WordPress)은 이러한 리터럴을 피하기 위해 PHP의 함수를 사용했기 때문에 데이터베이스 접속의 실제 인코딩(PHP 자체에서 불과 몇 달 전에 해결되었던 위협)에 대해서는 알지 못했습니다.
이는 Word Press의 SQL 주입에 대한 방어책으로 거의 2년간 유지되었으며, 이후 Word Press는 탈옥을 위해 (더 안전하지 않은) 사용으로 전환되었습니다. 이 상황은 4년 이상 유지되어 마침내 사용되었습니다(그 사이에 도입되었습니다).
그 후 Word Press가 네이티브 스테이트먼트를 준비할 수 있는 드라이버(즉 MySQLi)를 사용하기 시작할 때까지 5년이 걸리지 않았습니다.이것은 2년도 안 되어 @nathhedeveloper가 이미 지적한 바와 같이 티켓 #21663의 논의는 네이티브한 스테이트먼트를 사용하는 것이 해야 할 일에도 포함되지 않을 수 있음을 시사합니다.
현상
불행히도 MySQLi 객체는 보호되는 멤버이기 때문에wpdbgetter가 없고 인스턴스화 중에 내부적으로 할당되는 클래스는 WordPress의 데이터베이스 연결에서 네이티브 준비 문을 사용할 수 없습니다(적어도 수정/교체하지 않고는 사용할 수 없습니다.wpdb을 이용하다)
진짜를 얻기 위해 제가 할 수 있는 일이 있을까요?
물론 원하는 대로 완전히 유연하게 수행할 수 있는 데이터베이스에 대한 자체 또는 개별 연결을 열 수 있습니다.
아니면 저의 우려는 근거가 없는 것일까요?
네이티브 스테이트먼트 준비는 훌륭하지만(또한 새로운 프로젝트에서 SQL 주입에 대한 기본 방어 전략이 되어야 한다는 데 동의합니다) 단점도 있습니다.SQL 리터럴로 사용하기 위해 변수를 신중하게 회피한다(PDO가 준비한 스테이트먼트 에뮬레이션 등).wpdb::prepare()현재 전달하려는 시도)는 알려진 모든 공격에 대해 저항해야 합니다.
언급URL : https://stackoverflow.com/questions/38206366/what-can-i-do-to-get-actual-prepared-statements-in-wordpress
'programing' 카테고리의 다른 글
| Oracle 스토어드 프로시저 내의 텍스트 검색 (0) | 2023.03.26 |
|---|---|
| 문서 기반 데이터베이스와 키/가치 기반 데이터베이스의 차이점 (0) | 2023.03.26 |
| Wordpress에서 임의의 투고 가져오기 (0) | 2023.03.26 |
| MongoDB 데이터베이스 연결 열기 (0) | 2023.03.26 |
| 새 탭에서 React-Router 링크 열기 (0) | 2023.03.26 |