동적 SQL 로그인 생성
개발자는 저장 프로시저를 사용하여 동적으로 SQL 로그인을 생성하려고 할 때 종종 어려움을 겪습니다. 이 일반적인 문제에 대한 해결책으로 이 문서에서는 간단하고 안전한 접근 방식을 사용하여 동적 로그인을 구성하는 방법을 보여줍니다.
문제 설명
Justin이라는 개발자가 도움을 구했습니다. SaaS 데이터베이스에 테넌트를 생성하고 사전 정의된 역할에 대한 액세스 권한을 부여할 수 있는 저장 프로시저를 제작합니다. 그러나 로그인을 생성하는 동안 오류가 발생했습니다.
"CREATE LOGIN @username WITH PASSWORD = @password"
SQL Manager가 다음 오류를 반환했습니다.
답변
이 문제를 해결하는 열쇠는 CREATE LOGIN이 사용자 이름에 대해 리터럴 값만 허용한다는 점을 이해하는 것입니다. 이 문제를 해결하려면 로그인 생성 문을 동적으로 구성해야 합니다.
다음 코드는 안전한 접근 방식을 보여줍니다.
DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, ''''); EXEC(@sql)
이 접근 방식은 리터럴 사용자 이름과 비밀번호를 인용 이름으로 묶어서 이를 방지합니다. SQL 주입 공격. 동적 SQL 문을 사용하고 매개변수 값을 주의 깊게 처리하면 저장 프로시저를 사용하여 SQL 로그인을 동적으로 생성하는 것이 가능해집니다.
위 내용은 저장 프로시저를 사용하여 동적 SQL 로그인을 안전하게 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!