1. Perl / Говнокод #5231

    −116

    1. 1
    2. 2
    3. 3
    4. 4
    $answer=~ s/\\/\\\\/g;                                                                                                                                                      
    $answer=~ s/\'/\\\'/g;
    # ...
    $dbh->do("INSERT INTO docflow_rules (type_,state1,state2,p,entity,subj_require,comm_require) VALUES ($doctype,$from_,$to_,'$answer',$entity,$subj_r,$comm_r)");

    Еще от неизменного автора.

    Запостил: SanityIO, 12 Января 2011

    Комментарии (2) RSS

    • еще один антиинжекшн? )))
      Ответить
      • да, причем если бы автор кода дочитал бы до конца мануал на DBI::do (а там всего 20 строк текста), то он бы осознал, что do поддерживает биндинг переменных, который автоматически экранирует все нежелательные спецсимволы:
        $dbh->do(qq{
        INSERT INTO docflow_rules
        (type_,state1,state2,p,entity,subj_require,comm_require) 
        VALUES 
        (?, ?, ?, '?', ?, ?, ?)},
        undef, 
        $doctype,$from_,$to_, $answer, $entity, $subj_r, $comm_r);
        Ответить

    Добавить комментарий