Sitenize Güvenlik Taramasi Yapma
Sizde zararlı fonksiyonlar acıkmı kapalı onları öğrenip kısa bir güvenlik taraması yapabiliriz. Bu tür bir güvenlik taraması yapmak için bir PHP scripti yazabiliriz. Ancak, dikkatli olmalısınız; bu tür bir tarama yaparken sitenizin performansı üzerinde olumsuz etkiler yaratabileceğinden, bu tür bir kodu test ortamında denemeniz tavsiye edilir. Ayrıca, bu kodun site güvenliği ve performansı hakkında yalnızca temel bir analiz yapabileceğini unutmayın.
Aşağıda, PHP dosyalarının içindeki bazı potansiyel güvenlik açıklarını veya performans sorunlarını tespit etmeye yönelik basit bir kod örneği bulabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php // Tarama yapacak dosyanın yolu $directory = __DIR__; // Kötü niyetli kodları tespit eden temel ifadeler $patterns = [ '/eval\s*\(/i', // eval() fonksiyonu kullanımı '/base64_decode\s*\(/i', // base64_decode() fonksiyonu kullanımı '/exec\s*\(/i', // exec() fonksiyonu kullanımı '/shell_exec\s*\(/i', // shell_exec() fonksiyonu kullanımı '/system\s*\(/i', // system() fonksiyonu kullanımı '/passthru\s*\(/i', // passthru() fonksiyonu kullanımı '/popen\s*\(/i', // popen() fonksiyonu kullanımı '/proc_open\s*\(/i', // proc_open() fonksiyonu kullanımı '/$_(GET|POST|REQUEST|COOKIE|SESSION)/i', // Super global değişkenlere doğrudan erişim '/(mysqli|pg_query|oci8)/i' // Bazı veritabanı fonksiyonları ]; function scanFiles($dir, $patterns) { $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)); foreach ($iterator as $file) { if ($file->isFile() && $file->getExtension() === 'php') { $content = file_get_contents($file->getRealPath()); foreach ($patterns as $pattern) { if (preg_match($pattern, $content)) { echo "Potansiyel sorun bulundu: {$file->getRealPath()}\n"; echo "Örnek Kod:\n"; $lines = explode("\n", $content); foreach ($lines as $lineNum => $line) { if (preg_match($pattern, $line)) { echo ($lineNum + 1) . ": " . htmlentities($line) . "\n"; } } echo "-----------------------------------\n"; } } } } } // Taramayı başlat scanFiles($directory, $patterns); ?> |
Yukardaki örnek kod tamamen deneme amaclı test olarak kullanılır ve bu kodları kendiniz geliştirebilirsiniz. Kesinlikle herhangibir sorumluluk almıyor tüm sorumluluk size aittir.
Kod Açıklamaları:
- $directory: Tarama yapılacak dizinin yolunu belirtir.
__DIR__
sabiti ile mevcut dizin kullanılır. - $patterns: Kötü niyetli veya performans sorunları yaratabilecek fonksiyonları ve süper global değişkenlere erişimi kontrol eden düzenli ifadeler listesi.
- scanFiles: Bu işlev, dizin içindeki tüm PHP dosyalarını tarar ve içeriğinde belirtilen desenlerden herhangi birini arar.
- Dosya ve satır numarası bilgisi: Tespit edilen kod örnekleri ve dosya yolu ekrana yazdırılır.
Kullanım Notları:
- Test Ortamı: Bu kodu canlı bir ortamda kullanmadan önce test ortamında denemeniz gerekmektedir.
- Performans: Büyük ve karmaşık projelerde performans sorunları yaşayabilirsiniz. Kodunuzu optimize etmek için belirli dosyaları hedef alabilirsiniz.
- Güvenlik: Bu kod yalnızca temel bir tarama yapar. Güvenlik açıklarını tespit etmek için daha gelişmiş araçlar ve teknikler kullanmak gerekebilir.
Bu kodun sadece temel bir tarama sunduğunu ve daha kapsamlı bir güvenlik analizi için profesyonel araçlar ve danışmanlık hizmetleri almanız gerektiğini unutmayın.
PHP Güvenliği hakkında diğer konu