sp_executesql의 보안 영향은 무엇입니까?


9

기본적으로 SQL Server에서는 [public]역할에 EXECUTE대한 권한이 있습니다 sp_executesql.

그러나 이전 DBA가에 대한 EXECUTE권한을 취소 한 데이터베이스 서버를 상속 했습니다 sp_executesql.

임시 해결 방법으로 필자는 마스터 데이터베이스의 역할을 통해 필요에 따라 EXECUTE권한을 부여했습니다 sp_executesql. 그러나 이것은 유지 관리의 어려움으로 시작되었습니다.

EXECUTE대중 에게 돌려 주면 알아야 할 영향이 있습니까?

답변:


8

없음 sp_executesql원래 호출자가 동일한 SQL을 실행하는 것과 동일한 컨텍스트 및 권한으로 SQL을 실행합니다 . 동적 SQL을 피할 수없는 경우가 많습니다.


3
-1은 대답에 Microsoft가 보안 위험이있을 수 있음을 지적하지 않기 때문에 msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173

@ miracle173-공평하게 말하면 보안 위험이 아닌 동적 SQL이 잘못 작성되었습니다 sp_executesql. 다음 동적 SQL 요구 사항을 가정하지 않도록 설정 sp_executesql하면 쿼리의 파라미터를 할 수 있도록 그 이상으로 실제로 위험을 증가시킬 수있다 (달리 EXEC)
마틴 스미스

2
SQL 삽입의 위험을 결코 과소 평가할 수 sp_executesql는 없지만 비활성화 는 적절한 완화 방법이 아닙니다. SQL 조각이 입력 변수와 연결되어 '있는 그대로'실행되어 SQL 문이 '손으로'빌드 될 때 클라이언트에서 압도적 인 SQL 주입 오류가 발생합니다. 모든 경우 sp_executesql에 비활성화되면 아무것도 도움이되지 않습니다.
Remus Rusanu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.