[SQL] 로그온을 생성 - SQL 사용자 이름으로 @parameter 사용할 수 없습니다
SQL로그온을 생성 - SQL 사용자 이름으로 @parameter 사용할 수 없습니다
나는 개발자 그리고 난 SQL 빨아 :) 여기에 저를 도와주세요.
내 SaaS는 데이터베이스에 세입자를 만들어 내 자신의 저장 프로 시저를 작성하고 싶습니다. 임차인에 대한 새로운 SQL 로그인을 생성하고 미리 정의 된 SQL 역할에 추가하려면이 I의 필요성을하기 위해.
난 이미 바로 로그인을 만들려고 난처한 해요. 여기에 내가 무엇을 시도했다입니다 ...
CREATE PROCEDURE [MyScheme].[Tenants_InsertTenant]
@username nvarchar(2048),
@password nvarchar(2048)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
CREATE LOGIN @username WITH PASSWORD = @password
END
나는이 간단해야 실현하지만, SQL 및 SQL 관리자 오류에 새가 비밀로 할 때 그들은 단지 도움을 요청하기 위해 더 내게 될 것으로 :)
감사, 저스틴
해결법
-
==============================
1.분명히 LOGIN은 리터럴을 받아 작성하십시오. 당신은 간부에 포장하고 문자열로 구축을 시도 할 수 있습니다 :
분명히 LOGIN은 리터럴을 받아 작성하십시오. 당신은 간부에 포장하고 문자열로 구축을 시도 할 수 있습니다 :
EXEC('CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, ''''))
편집 : SQL 주입 공격으로부터 안전을 위해 추가 QUOTENAME
-
==============================
2.가능한 해결책:
가능한 해결책:
sp_addlogin을 @loginame = '검사'@passwd = '검사'@defdb = '검사'
-
==============================
3.이 시도:
이 시도:
declare @t nvarchar(4000) set @t = N'CREATE LOGIN ''''' + @username + ''''' WITH PASSWORD = ''''' + @password exec sys.sp_executesql @t
-
==============================
4.@codeulike 및 @Galkin I의 답변에 구축이 일을 결국 :
@codeulike 및 @Galkin I의 답변에 구축이 일을 결국 :
DECLARE @t nvarchar(4000) SET @t = N'CREATE LOGIN ' + QUOTENAME(@username) + ' WITH PASSWORD = ' + QUOTENAME(@password, '''') + ', default_database = ' + QUOTENAME(@DatabaseName) EXEC(@t)
내가 SQL 서버 2019를 실행하고 EXEC를 결합하고있어 (-> QUOTENAME와 () 내부 <-) 작동하지 않습니다.
나는 그 SQL 주입으로부터 보호 실행 문자열을 구축 할 QUOTENAME를 사용하여 Microsoft SQL 주입 문서를 이해합니다.
from https://stackoverflow.com/questions/837358/sql-create-logon-cant-use-parameter-as-username by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 올바르게 삽입 줄 바꿈에 NVARCHAR (0) | 2020.05.29 |
---|---|
[SQL] 열 이름을 가진 여러 열의 가장 큰 가치인가? (0) | 2020.05.29 |
[SQL] SQL 쿼리 테이블에 가입하기 (0) | 2020.05.29 |
[SQL] 왜 wm_concat 여기에 작동하지 않는 이유는 무엇입니까? (0) | 2020.05.29 |
[SQL] 부동 소수점으로 값을 캐스팅 할 수 없습니다 (0) | 2020.05.29 |