ADODB veya PDO ile parametrized sorguları kullanın. Bu kütüphaneler bağlı olduğu veri tabanına dayalı kullanmak için en iyi kaçış fonksiyonunu biliyorum. Onlar açıklarını tanıtan olmadan MySQL ve MS-SQL arasında geçiş yapmanızı sağlar.
SQL Injection for MySQL and MS-SQL are radically different.
MS-SQL için SQL Injection much daha ciddi. Biri için sorguları yığını olabilir:
select * from `table` where id='1' ; drop table `table`;-- '
Kaçan addslashses () not MS-SQL altında SQL enjeksiyon durdurmak, tamamen farklıdır. O yüzden bu bir kaçan sorgusu çift tırnak sistemi kullanır:
select * from table where test='trying to inject '' didn''t work!'
Bir hacker da bir sql sorgu xp_cmdshell
kullanarak cmd.exe erişebilirsiniz. Bu ayrıcalık kaldırıldı emin olun!
MySQL altında can't yığını, bu yüzden onun yaygın bir seçme içine enjeksiyon, aksi takdirde bir alt seçimi kullanabilirsiniz yalnızca çalışır (seçmek sendika kullanmak için, ama sen / silme / bir damla / güncelleme yığını değil ) bir seçme üstüne yerleştirin:
select somthing from table where 1 union select password from mysql.user
Kaçış) geri bölü, addslashes (ile yapılır çoğu zaman çalışır, ama mysql_real_escape_string () olan a lot better.
select * from table where test='trying to inject \' didn\'t work!'
Ayrıca aksi bir hacker bir arka kapı bırakmak mümkün olabilir file_priv devre dışı bırakmak istiyorum:
select test from table where name='jon' union select "<?php eval($_GET[e])?>" into outfile "/var/www/backdoor.php"-- '