PHP proje üzerinde eşim her zaman dinamik SQL tamsayı değerleri sanitasyon benim uygulama nesneleri. Biz mümkün olduğunda parametreli sorgular kullanırız. Ama GÜNCELLEME ve koşulları DELETE için Zend_Db_Adapter
olmayan bir parametreli SQL dizesi gerektirir. Ben bile düşünmeden, her zamanki gibi bir şey yazmak yüzden:
$db->delete('table_foo', 'id = ' . intval($obj->get_id()));
Eşdeğerdir, ama (ben ZF kaynak kodunu kontrol ettim) daha kısa bir versiyonu olan:
$db->delete('table_foo', $db->qouteInto('id = ?', $obj->get_id(), 'INTEGER'));
Eşim şiddetle $obj
Kimlik (nesne henüz DB kaydedilmez) null ise, ben bir hata fark etmez, ve DB işlemi sadece irade olduğunu söyleyerek, bu intval()
nesneleri sessizce yürütmek. Bu aslında ona ne oldu bu.
Hepimizin HTML formları girdileri varsa, orada bir tamsayı kimlik muhtemelen ''; DROP TABLE ...'
içine almak, ya da ' OR 1 = 1
hiçbir şekilde veya başka kötü bir değer, ve takılı olsun diyor bizim SQL sorguları. Böylece, sadece paranoyak değilim, ve hayatımızı gereksiz yere daha karmaşık yapıyorum. "Ardından $_SESSION
değerleri güvenmeyi durdurma" diyor.
Ancak, dize değeri koşulları için o kabul etmez:
$db->update->(
'table_foo',
$columns,
'string_column_bar = ' . $db->qoute($string_value))
);
Ben onu yanlış kanıtlamak için başarısız oldu, ve o bana yanlış kanıtlamak için başarısız oldu. Eğer birini yapabilirsiniz?