连接这样的字符串是否会让我接受 SQL 注入?

Eri*_*rik 3 sql-server sql-injection

我最近用以下代码示例回答了一个问题:

Create Table #Testing
(
  emaildomain varchar(100) -- Still bigger than functionally needed but better than MAX
);
INSERT INTO #Testing VALUES (REVERSE('@myfreepaysite.com')); -- Changed


Create Table #DataToCheck
(
  fullemail varchar(200) -- Still bigger than functionally needed but better than MAX
);
Insert Into #DataToCheck VALUES(REVERSE('rr1234@myfreepaysite.com')); --Changed

Select Top 1 
  REVERSE(fullemail)
  , REVERSE(emaildomain)
FROM #DataToCheck
  INNER JOIN #Testing ON fullemail LIKE emaildomain + '%';
Run Code Online (Sandbox Code Playgroud)

当我写最后一行时,我想知道EmailDomain用通配符连接列是否是 SQL 注入的开始。这是我应该注意这种类型的代码还是 SQL Server 会将其评估为单个统一参数以便我不必担心使用这种方法?

Aar*_*and 5

不。该值将始终被解释为字符串,并且无法将任何内容放入emaildomain列中,这可能会使查询执行意外代码。它要么会找到匹配项,要么不会。

当然,这与您发布的特定代码示例有关,仅此而已。您应该始终关注您从用户那里接受的任何数据......因为您可能不知道现在或将来可能会在哪里使用它。