предотвратить SQL-инъекцию в CREATE LOGIN WITH PASSWORD [duplicate]

Я использую React Router v4.2, и я не смог получить ссылку на объект маршрутизатора из компонента-оболочки, потому что контекст недоступен.

Это не сработало:

const { router } = this.context

Мне нравится @ mpen's answer , но я использую вложенные маршруты, и я не хочу изменять файл, в котором у меня установлен компонент маршрутизации.

То, что я сделал, сравнивает location.pathname с:

const NavItem = withRouter((props) => {
const { to, children, location } = props;
return (
    
  • {children}
  • )});

    4
    задан Sudantha 14 February 2011 в 12:38
    поделиться

    2 ответа

    Вы не можете использовать переменные для имен объектов. Вы можете обмануть

    exec sp_addlogin @User_name, @password;
    

    Либо это, либо построить динамический SQL, но обязательно используйте QUOTENAME для предотвращения SQL-инъекции.

    5
    ответ дан RichardTheKiwi 20 August 2018 в 12:33
    поделиться
    • 1
      Этот Stored Proc устарел после SQL Server 2005, вам лучше использовать динамический SQL с CREATE LOGIN – MaxiWheat 6 March 2013 в 17:08

    Вы не можете использовать создание входа с переменными. Вы должны создать инструкцию динамически или использовать sp_addlogin. Согласно http://msdn.microsoft.com/en-us/library/ms173768.aspx sp_addlogin устарел.

    declare @UN sysname
    declare @PW sysname
    declare @S nvarchar(100)
    
    set @UN = 'UserName'
    set @PW = 'Password'
    
    set @S = 'CREATE LOGIN ' + quotename(@UN) + ' WITH PASSWORD = ' + quotename(@PW, '''')
    
    exec (@S)
    
    8
    ответ дан Mikael Eriksson 20 August 2018 в 12:33
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: