> 데이터 베이스 > MySQL 튜토리얼 > 저장 프로시저를 사용하여 동적 SQL 로그인을 안전하게 생성하려면 어떻게 해야 합니까?

저장 프로시저를 사용하여 동적 SQL 로그인을 안전하게 생성하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-17 02:14:25
원래의
684명이 탐색했습니다.

How Can I Securely Create Dynamic SQL Logins Using Stored Procedures?

동적 SQL 로그인 생성

개발자는 저장 프로시저를 사용하여 동적으로 SQL 로그인을 생성하려고 할 때 종종 어려움을 겪습니다. 이 일반적인 문제에 대한 해결책으로 이 문서에서는 간단하고 안전한 접근 방식을 사용하여 동적 로그인을 구성하는 방법을 보여줍니다.

문제 설명

Justin이라는 개발자가 도움을 구했습니다. SaaS 데이터베이스에 테넌트를 생성하고 사전 정의된 역할에 대한 액세스 권한을 부여할 수 있는 저장 프로시저를 제작합니다. 그러나 로그인을 생성하는 동안 오류가 발생했습니다.

"CREATE LOGIN @username WITH PASSWORD = @password"

SQL Manager가 다음 오류를 반환했습니다.

  • "'@username' 근처의 구문이 잘못되었습니다."
  • "키워드 근처의 구문이 잘못되었습니다. 'with'. 이 문이 공통 테이블 표현식, XML 네임스페이스 절 또는 변경 내용 추적 컨텍스트 절인 경우 이전 문은 세미콜론으로 끝나야 합니다."

답변

이 문제를 해결하는 열쇠는 CREATE LOGIN이 사용자 이름에 대해 리터럴 값만 허용한다는 점을 이해하는 것입니다. 이 문제를 해결하려면 로그인 생성 문을 동적으로 구성해야 합니다.

다음 코드는 안전한 접근 방식을 보여줍니다.

DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, '''');
EXEC(@sql)
로그인 후 복사

이 접근 방식은 리터럴 사용자 이름과 비밀번호를 인용 이름으로 묶어서 이를 방지합니다. SQL 주입 공격. 동적 SQL 문을 사용하고 매개변수 값을 주의 깊게 처리하면 저장 프로시저를 사용하여 SQL 로그인을 동적으로 생성하는 것이 가능해집니다.

위 내용은 저장 프로시저를 사용하여 동적 SQL 로그인을 안전하게 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿