Já há algum tempo que não venho aqui ao blog, os vários projectos por onde tenho passado
no cliente tiram-me o tempo.
Desta vez, deparei-me com algo, que achei que tinha mesmo de ser partilhado convosco.
Encontrei uma função Javascript, que é incluída numa página com um código no mínimo curioso, apreciem:
function insertDoc(Centro, Estrutura, Area, Produto, Operacao, TipoRegisto, ShortDt, User, Quantidade, sysDate, allow) {
var xml, msql, QantFix, incDate;
var doc, docAttr, docChilds, nor;
debugger;
incDate = ShortDt;
QantFix = Quantidade;
if (allow == "A")
QantFix = calculaQuantidadeACT(Centro, Estrutura, Area, Produto, Operacao, TipoRegisto, ShortDt, User, parseInt(Quantidade), sysDate, allow);
while (incDate <= sysDate)
{
msql = "declare @Centro as char(3); declare @estrutura as char(2); declare @area as char(2); declare @produto as char(2); declare @operacao as char(2); declare @TipoRegisto as char(30); declare @userid as char(8); declare @quantidade as int; declare @allow as char(1); " +
"select @Centro='" + Centro + "'; select @estrutura=" + Estrutura + "; select @area=" + Area + "; select @produto=" + Produto + "; select @operacao=" + Operacao + "; select @TipoRegisto='" + TipoRegisto + "'; select @userid='" + User + "'; select @quantidade=" + Quantidade + "; select @allow='" + allow + "'; " +
"declare @DTPD as datetime; declare @DT as datetime; select @DTPD='" + ShortDt + "'; select @DT='" + incDate + "'; declare @RecebidosD as int; declare @PendentesD as int; declare @PendentesDA as int; ";
if (ShortDt == incDate) {
msql = msql + "" +
"select @RecebidosD=(select quantidade from tregisto " +
"where centro=@Centro and estrutura=@estrutura and area=@area and produto=@produto and operacao=@operacao and tiporegisto=@tiporegisto and data=@DT); " +
"if (@RecebidosD is null) begin " +
"insert into tregisto (centro, estrutura, area, produto, operacao, tiporegisto, data, userid, quantidade) " +
"values (@Centro, @estrutura , @area, @produto, @operacao, @TipoRegisto, @DT, @userid, @quantidade); " +
"select @RecebidosD=(select quantidade from tregisto " +
"where centro=@Centro and estrutura=@estrutura and area=@area and produto=@produto and operacao=@operacao and tiporegisto=@tiporegisto and data=@DT); "
.... (Omitido o resto por questões de brevidade)
}
Temos aqui um caso clássico de utilização de SQL client side, e disponível na página . . .
Algo a evitar!
Subscrever:
Enviar feedback (Atom)
1 comentário:
Olá Luís,
muito bom exemplo pela negativa sem dúvida :)
Assim nem dá vontade de fazer 'sql injection' porque está demasiado facilitado!
Abraço
Enviar um comentário