Nasıl güvenlik kaygısı hiç yoktur rağmen SQL enjeksiyon bu tür işler?

4 Cevap php
bob'); drop table students; --

PHP, bu başarısız olur:

mysql("statement1;statement2;");

Orada sadece bir ifadesi olabilir, bu yüzden gerçekten şüphe nasıl yukarıdaki enjeksiyon aslında hiç çalışabilir?

4 Cevap

Bu multiple queries to be run at once izin olduğu gibi kod mysqli library kullanıyorsa, enjeksiyon Bu tür çalışacaktır.

Peki MySQL çalışmıyor, ancak SQL enjeksiyon ile yapılabilir başka şeyler var.

Bu düşünün:

$sql = "SELECT * FROM users WHERE username = '$username' AND passwd = '$password'";

// run the query, check if the user exists, let them in, etc

Eğer username alana bu yazarsak:

admin' -- 

o olur:

SELECT * FROM users WHERE username = 'admin' -- AND passwd = 'whatever'

Sorgu sunucu üzerindeki tüm kaynakları hogging tamamlamak için çok uzun bir zaman alır, böylece onlar girdi yapısı Denial-of-service saldırıları, olasılığı da var.

//input:

admin' AND id IN (SELECT u1.id FROM users u1, users u2, users u3, users u4)

Eğer sisteminizde 1000 kullanıcıları olsaydı, bu sorgu 1.000.000.000.000 kayıtları döndürmek için çalışıyor olurdu.

Bu sadece bir cartoon var!

Haklısın, çok sorgu varsayılan olarak çalışmaz, ve PHP düz mysql uzantısı tarafından da desteklenen tüm değil.

It would, daha ince bir SQL enjeksiyon açıkları var, ama sonra komik komik olmaz mıydı?

Emin olun bu işe, ama ayırıcı olarak // yerine kullanarak ; çalışacağız değilse, örneğin,

bob')// drop table students// --

PHP multi_query deyimi here kullanarak çoklu ifadeleri göndererek bilgi yoktur.