첫 번째 sql 문만 실행하도록 PHP pdo execute()를 제한하는 방법이 있습니까?php pdo execute()를 첫 번째 sql 문 실행으로 제한
모든 고객을 반환합니다SELECT * FROM customer;DROP TABLE invoice
을 실행하는 예를 들어
뿐만 아니라 송장 테이블을 삭제합니다.
나는 사용자로부터 전체 SQL 문을 필요로하지만 SELECT와 추가 항목이 없어야합니다.
이 예는 악의적으로 입력 될 수있는 많은 예 중 하나입니다. 추가 DROP, UPDATE, DELETE 문 등을 포함 할 수 있습니다.
준비된 명령문은? s를 값으로 간단하게 바꿉니다. 그것은 위험한 SQL statemets이 전달되는 것을 막지 않습니다.
첫 번째 SQL 문만 실행하도록 PHP pdo execute()를 제한하는 방법이 있다면 문제가되지 않습니까?
을 방지하기 위해이 같은 것을 사용할 수 있습니다
? 그리고 주입에 대해 걱정이된다면 PDO의 Prepared 문은 특별히 –
을 처리 할 것입니다. 쿼리에 drop 쿼리가 포함되어 있으면 삭제하고, 일부 쿼리에이 쿼리가 있으면'preg_replace ("/ (. *?) DROP (. *)/","$ 1 ","SELECT * FROM customer; DROP TABLE 인보이스 ");'해당 쿼리에 drop 쿼리가 있으면 삭제합니다. –
@ user790454 - 하위 문자열을 선택하면 실패 할 수 있습니다. 또는 단어 drop을 포함하는 부분 문자열을 삽입하십시오. – Scopey