2008-07-24

SQL Injection

Eu estava lendo sobre este assunto no post SQL Injection Hack using CAST from 1.verynx.cn, e por isto estou disponibilizando esta customtag que pode enviar alertas por e-mail e gravar log, seu uso é muito simples, veja algumas variações.

Bloqueia e grava em log:
<cf_DisableSQLInjection>

Bloqueia,grava em log e envia e-mail:
<cf_DisableSQLInjection mailto="e-mail,e-mail,e-mail,e-mail">
or
<cf_DisableSQLInjection mailto="e-mail,e-mail,e-mail,e-mail" mailfrom="mail">

Bloqueia,grava em log, envia e-mail e adiciona um titulo customizado:
<cf_DisableSQLInjection mailto="e-mail" mailfrom="mail" title="Erro 404" >

Bloqueia,grava em log, envia e-mail, titulo customizado e adiciona mensagem html na pagina:
<cf_DisableSQLInjection mailto="e-mail" mailfrom="mail" title="Erro 404" message="<h3>Erro 404 - page not found</h3>" >

Bloqueia,grava em log, envia e-mail, titulo customizado, mensagem html e incrementa a lista negra de palavras reservadas:
<cf_DisableSQLInjection mailto="e-mail" mailfrom="mail" title="Erro 404" message="<h3>Erro 404 - page not found</h3>" keywords="print|union" >


Dê a preferência ao uso no nos Application.(cfm|cfc)

customtag

2008-07-23

New Hosting in Brazil

Está nascendo a DIGITRUM.

A todos que estão empenhando esforços, meus parabéns, e muito sucesso.

Estamos aguardando.

DIGITRUM - As mudanças começaram

URL, como tratar? - II

Em resposta a uma pergunta feita no CF-brasil, retorno ao assunto.

Uma das opções é demonstrada no post Flexible Friendly URLs for Farcry with Mod rewrite (Updated), que possui a seguinte url .../index.cfm/[ano]/[mes]/[dia]/[titulo], que provavelmente não utiliza o rewrite. DEVE utilizar um recurso como o seguinte:

<cffunction name="configureEscopoUrl">
<cfset uVars=ListToArray(ListFirst(trim(cgi.path_info), '?'),"/")>
<cfif Arraylen(uVars)>
<cfswitch expression="#Arraylen(uVars)#">
<cfcase value="0"></cfcase>
<cfcase value="1">
<cfif IsNumeric(uVars[1])>
<cfset url.Year = CreateDate(uVars[1],1,1)>
</cfif>
</cfcase>
<cfcase value="2">
<cfif IsNumeric(uVars[1]) and IsNumeric(uVars[2])>
<cfset url.Month = CreateDate(uVars[1],uVars[2],1)>
</cfif>
</cfcase>
<cfcase value="3">
<cfif IsNumeric(uVars[1]) and IsNumeric(uVars[2]) and IsNumeric(uVars[3])>
<cfset url.Day = CreateDate(uVars[1],uVars[2],uVars[3])>
</cfif>
</cfcase>
<cfcase value="4">
<cfif IsNumeric(uVars[1]) and IsNumeric(uVars[2]) and IsNumeric(uVars[3])>
<cfset url.Day = CreateDate(uVars[1],uVars[2],uVars[3])>
</cfif>
<cfif Len(Trim(uVars[4]))>
<cfset url.nameid = uVars[4]>
</cfif>
</cfcase>
<cfdefaultcase>
<cfif IsNumeric(uVars[1]) and IsNumeric(uVars[2]) and IsNumeric(uVars[3])>
<cfset url.Day = CreateDate(uVars[1],uVars[2],uVars[3])>
</cfif>
<cfif Len(Trim(uVars[4]))>
<cfset url.nameid = uVars[4]>
</cfif>
<cfloop from="5" to="#ArrayLen(uVars)#" index="i" step="2">
<cfset url[uVars[i]] = "" >
<cfif ArrayLen(uVars) GTE (i+1)>
<cfset url[uVars[i]] = uVars[i+1] >
</cfif>
</cfloop>
</cfdefaultcase>
</cfswitch>
</cfif>
</cffunction>


Este código segue o padrão index.cfm/[ano]/[mes]/[dia]/[titulo]/var1/valor1/varn/valorn.


Enjoy!