2011-12-12 2 views
0

각 업데이트 나 삽입마다 SQL 코드를 작성하는 것을 피하려고합니다. 대신 PHP 함수는 일부 매개 변수 (tablename, fields-list를 추가 또는 변경)를 가져 와서 SQL을 작성합니다. 이는 매개 변수가있는 명령문 (mysqli)을 사용하는 기본 방법과 유사하지만 동일하지는 않습니다.하나의 함수가 매개 변수로 SQL 문자열을 작성합니다. 보안상의 위험이 있습니까?

해커들이 SQL을 사용하여 큰 미소를 지을 수있는 방법은 무엇입니까?

답변

1

사용자 입력이 SQL 쿼리에 추가되도록 허용하는 경우 보안 위험이 있습니다. 소스 코드에 정의 된 상수 매개 변수를 사용하는 경우에는 문제가 없지만 웹 사이트 사용자가 제공하는 실제 값은 항상 바인딩 된 매개 변수를 사용해야하며 SQL 쿼리에 직접 추가되지 않아야합니다.

0

예 학대/오용을 위해 기능을 테스트하는 데 중요한 자원을 투자 할 수 없다면 보안상의 위험이 있습니다.

고려해야 할 다른 요소가 있습니다. 동적 SQL을 구축하면 데이터베이스에서 쿼리를 캐시하는 기능이 감소합니다. 함수를 호출 할 때마다 쿼리가 새로운 것으로 구문 분석됩니다. 이는 성능에 상당한 영향을 줄 수 있습니다. 바인드 매개 변수를 사용하면 데이터베이스가 매개 변수를 쿼리의 가변 부분으로 인식 할 수 있으므로 동일한 문제가 발생하지 않습니다.

관련 문제