Arquivos da categoria: Expressões Regulares

Removedor de injeção de SQL

Olá pessoal.

Segue um simples código para remover uma possível injeção de SQL.

O código simplesmente substitui o que é considerado perigo por vazio. O legal é o uso do método Replace da classe Regex (expressões regulares) que ignora o case não momento da substutição dos valores.

using System.Text.RegularExpressions;


public static string RemoveInjecao(string texto)
{
	string[] caracteresInvalidos1 = { "select ", "drop ", "--", "insert ", "delete ", "xp_", "'", "%", "update ", "group by ", "having ", @"sum(", @"count(", "alter table", " – ", "–", " –", "– ", "varchar", "declare", @"cast(", @"exec(" };

	for (int i = 1; i < caracteresInvalidos1.Length; i++)
	{
		//replace que ignora o case (maiúsculo/minúsculo)
		texto = Regex.Replace(texto, caracteresInvalidos1[i], "", RegexOptions.IgnoreCase); 
	}	
	return texto.Trim();
}

Fica a dica!

Validar a quantidade de caracteres num TextBox MultiLine (TextArea)

Sabemos que para transformar o ServerControl TextBox em TextArea temos que mudar sua propriedade TextMode para o valor MultiLine. Também sabemos que via HTML não é possível limitar o tamanho de um TextArea por meio do MaxLength como é feito num Input Text. Isso pode ser contornado com o uso de Javascript.

Usando o controle ASP.NET RegularExpressionValidator e a expressão regular ^.[sS]{0,500}$, é possível validar a quantidade de caracteres inseridas num TextBox MultiLine (TextArea). Na expressão acima, o valor 500 é a quantidade máxima de caracteres que desejamos no TextBox MultiLine (TextArea).

<asp:TextBox ID="TextBox1" runat="server" Height="93px" TextMode="MultiLine" Width="381px"></asp:TextBox>
<br />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1"
  ErrorMessage="Ultrapassou 500 caracteres." ValidationExpression="^.[sS]{0,500}$">
</asp:RegularExpressionValidator>

Bom proveito.

Replace Case Insensitive

Olá pessoal.

O método Replace da classe String ou dos objetos do tipo string é case sensitive, ou seja, maiúsculo e minúsculo são diferente no momento de fazer substituições em strings.

Em algumas situações precisamos fazer substituições na string independente do caso dos caracteres.

A classe System.Text.RegularExpressions.Regex possui uma versão do método Replace que permite fazer substituições em string independemente do caso de caracteres.

string x = System.Text.RegularExpressions.Regex.Replace("TesTE do replace, "teste do", "testado o", RegexOptions.IgnoreCase);

Essa sobrecarga do método Replace utilize os seguintes parâmetros:

1º: String principal, que sofrerá a operação de substituição.
2º: String que irá será pesquisada dentro da string do 1º parâmetro.
3º: String que irá substituir a string informada no 2º parâmetro.
4º: Opções sobre o tipo de caso de caracteres que deverá ser considerando durante a substituição.

O resultado do exemplo acima é “testado o replace”. Ou seja, “TesTE do” foi substuído, mesmo com caso de caracteres diferentes.

Dependendo a situação pode ser bem útil.

Até mais.