Connecting Tech Pros Worldwide Help | Site Map

Accepting wildcards like % in input parameters of stored procedures

 
LinkBack Thread Tools Search this Thread
  #1  
Old July 29th, 2008, 08:05 PM
nidaar
Guest
 
Posts: n/a
Default Accepting wildcards like % in input parameters of stored procedures

From a security point of view, is accepting wildcards like "%" in
input parameters of stored procedures against any best practices?

As an example, if a user defined function uses "Productname LIKE
@ProductName" in WHERE clause of a select statement, and a stored
procedure uses the user defined function while passing @ProductName
input parameter to the user defined function, is there any security
risks? Is there a better way to construct the search string while not
limiting the flexibility of using wildcards?

Thanks

  #2  
Old July 29th, 2008, 09:25 PM
--CELKO--
Guest
 
Posts: n/a
Default Re: Accepting wildcards like % in input parameters of storedprocedures

>From a security point of view, is accepting wildcards like "%" in input parameters of stored procedures against any best practices? <<

It should be fine. You are putting the pattern in a parameter and not
using dynamic SQL.
  #3  
Old July 29th, 2008, 09:25 PM
Erland Sommarskog
Guest
 
Posts: n/a
Default Re: Accepting wildcards like % in input parameters of stored procedures

nidaar (nidaar@gmail.com) writes:
Quote:
From a security point of view, is accepting wildcards like "%" in
input parameters of stored procedures against any best practices?
>
As an example, if a user defined function uses "Productname LIKE
@ProductName" in WHERE clause of a select statement, and a stored
procedure uses the user defined function while passing @ProductName
input parameter to the user defined function, is there any security
risks? Is there a better way to construct the search string while not
limiting the flexibility of using wildcards?
As long as you are only working with parameters and don't engange in
dynamic SQL there is no risk for SQL injection, if that is what you
have in mind.

There may be other security risks, like disclosure of information that the
user does not have right to see, but that is not as such affected by the
use of %.

The one thing I would have in mind with wildcard search is that there is
a big difference between initial wildcards and wildcards that comes
later. An initial wildcard does not go well with the index, so for larger
data volumes, you should prevent the user from using initial wildcards,
or at least lead initial wildcards into a code path on its own.


--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/pro...ads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinf...ons/books.mspx
  #4  
Old July 29th, 2008, 09:35 PM
Plamen Ratchev
Guest
 
Posts: n/a
Default Re: Accepting wildcards like % in input parameters of stored procedures

From security stand point it does not make a difference if you concatenate
the wildcards on the client and pass the whole search value as parameter, or
if you concatenate it in the stored procedure:

WHERE Productname LIKE '%' + @ProductName + '%'

For many applications I have used a screen drop down with values like
'Begins', 'Contains', 'Ends with', 'Equals' and then based on user selection
build the correct search pattern.


Plamen Ratchev
http://www.SQLStudio.com

  #5  
Old July 30th, 2008, 01:55 AM
nidaar
Guest
 
Posts: n/a
Default Re: Accepting wildcards like % in input parameters of storedprocedures

On Jul 29, 5:25*pm, "Plamen Ratchev" <Pla...@SQLStudio.comwrote:
Quote:
From security stand point it does not make a difference if you concatenate
the wildcards on the client and pass the whole search value as parameter,or
if you concatenate it in the stored procedure:
>
WHERE Productname LIKE '%' + @ProductName + '%'
>
For many applications I have used a screen drop down with values like
'Begins', 'Contains', 'Ends with', 'Equals' and then based on user selection
build the correct search pattern.
>
Plamen Ratchevhttp://www.SQLStudio.com
Thanks for all the prompt replies. Much appreciated.
  #6  
Old July 31st, 2008, 07:45 AM
Eric Isaacs
Guest
 
Posts: n/a
Default Re: Accepting wildcards like % in input parameters of storedprocedures

According to this MSDN article you might consider escaping the
wildcard characters in a like clause.

FROM: http://msdn.microsoft.com/en-us/library/ms161953.aspx
-------------------------------------------------------------
LIKE Clauses
Note that if you are using a LIKE clause, wildcard characters still
must be escaped:
....
s = s.Replace("[", "[[]");
s = s.Replace("%", "[%]");
s = s.Replace("_", "[_]");
-------------------------------------------------------------

I suppose the logic for escaping these characters is that if you
request that the user supplies 3 characters for a like match in the
UI, they can't just key ___ or %%% and have it return all the results
still. That's a very minor example of SQL Injection where the results
returned might be unanticipated by the developers.

By escaping them with [%] or [_] it actually searches for text that is
like the real percent and underscore characters as opposed to the
wildcard affect they have in the LIKE clause.

-Eric Isaacs
 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,989 network members.