Inquiridor
C# - Prevenindo SQL Injection

Pergunta
-
Galera,
Tenho um arquivo include, em ASP, que uso para detectar SQL Injection na página. Gostaria de convertê-lo para um UserControl usando C#.
Alguém pode me ajudar? Segue o código ASP:
<%
Dim objRegExpr, blnSQLInjection, strSQLInjectionType
blnSQLInjection = False
strSQLInjectionType = ""
Set objRegExpr = New RegExp
objRegExpr.Global = True
objRegExpr.IgnoreCase = True
objRegExpr.Pattern = "([\s]*(insert|update|cast|exec|set|upload|delete|drop|select|create|information_schema)[\s])|(""|'|;)"
For Each obj In Request.Form
If objRegExpr.Test(Request.Form(obj)) then
blnSQLInjection = True
strSQLInjectionType = "Form"
Exit For
End If
Next
For Each obj In Request.QueryString
If objRegExpr.Test(Request.QueryString(obj)) Then
blnSQLInjection = True
strSQLInjectionType = "QueryString"
Exit For
End If
Next
Set objRegExpr = Nothing
'===Response.Write("blnSQLInjection=[" & blnSQLInjection & "]<br>")
If blnSQLInjection then
%>
<style type="text/css">
body
{
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
background-color: #ffffff;
margin:0;
padding:0;
height:100%;
}
body,p,div,font,span {font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px; color: #121212;}
.alert {color:#ff0000;}
a.link {text-decoration:none;}
a.active {text-decoration:none;}
a.visited {text-decoration:none;}
a.hover {text-decoration:none;}
.sqlinjection {border:1px solid #ddd; border-width:0 0 1px; background:#ffff90; font-size:12px; line-height:1.25; text-align:center; color:#2f2f2f;}
.sqlinjection .sqlinjection-inner {width: 1000px; margin: 0 auto; padding: 12px 0 12px; background: #ffff90 no-repeat 20px 50%;}
.sqlinjection p { margin:0; }
</style>
<div class="sqlinjection">
<div class="sqlinjection-inner">
<% If varLang ="en-US" or varLang ="en-UK" then %>
<p><strong>The word or character <span class="alert"><%If strSQLInjectionType = "Form" then Response.Write(Request.Form(obj)) Else Response.Write(Request.QueryString(obj)) End If%></span> is invalid to field <span class="alert"><%=obj%></span> please substitute or remove it.<br /><a href='javascript:history.back();'>CLICK HERE TO RETURN</a></strong></p>
<% ElseIf varLang ="es-ES" then %>
<p><strong>La palabra o lo caracter <span class="alert"><%If strSQLInjectionType = "Form" then Response.Write(Request.Form(obj)) Else Response.Write(Request.QueryString(obj)) End If%></span> es incapacitado para el campo <span class="alert"><%=obj%></span> favor sustitúyalo o retírelo.<br /><a href='javascript:history.back();'>CLIC AQUÍ PARA REGRESAR</a></strong></p>
<% Else %>
<p><strong>A palavra ou caracter <span class="alert"><%If strSQLInjectionType = "Form" then Response.Write(Request.Form(obj)) Else Response.Write(Request.QueryString(obj)) End If%></span> é invalida(o) para o campo <span class="alert"><%=obj%></span> favor substituí-lo ou retirá-lo.<br /><a href='javascript:history.back();'>CLIQUE AQUI PARA VOLTAR</a></strong></p>
<% End If %>
</div>
</div>
<%
Response.End
End If
%>
Techvia - Ramon Rocha www.techvia.com.br - solucoes@techvia.com.br MSN: techvia@hotmail.com - Skype: techvia- Movido Seilor Bonancio Junior quarta-feira, 29 de dezembro de 2010 10:19 (De:ASP.NET)
Todas as Respostas
-
Fiz uma conversão, porém está dando erro nesta linha:
Se alguém puder me ajudar a montar uma expressão correta, agradeço.Regex objRegExpr = new Regex(@"^[\s]*(insert|update|cast|exec|set|upload|delete|drop|select|create|information_schema)[\s])|(""|'|;)$");
Techvia - Ramon Rocha www.techvia.com.br - solucoes@techvia.com.br MSN: techvia@hotmail.com - Skype: techvia -
-
Prezado Seilor,
Você comenteu um engano, não é dúvida sobre ASP...
Estou justamente convertendo um código ASP para C#, ou seja, a dúvida é em C#. Em ASP já funciona... Não tenho dúvida alguma...
Agradeço se corrigir o equívoco.
Grato.
Techvia - Ramon Rocha www.techvia.com.br - solucoes@techvia.com.br MSN: techvia@hotmail.com - Skype: techvia -
Ramon dúvida sobre asp, favor posta no forum de asp, estou migrando sua questions
Leia tb
http://www.stardeveloper.com/articles/display.html?article=2008112501&page=1
Não esqueça de usar o componente </> na barra para posta seu código.
Quanto ao artigo, agradeço, mas ele é sobre ASP e a solução que tenho já funciona, perfeitamente, em ASP.
Techvia - Ramon Rocha www.techvia.com.br - solucoes@techvia.com.br MSN: techvia@hotmail.com - Skype: techvia