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