İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Php'de Güvenlik-1 (Sürekli Güncellenecektir)

affedilmez

0
İyinet Üyesi
Katılım
17 Mart 2012
Mesajlar
26
Reaction score
0
Merhaba arkadaşlar
Bugün sizlere php kodlamalarımızda dikkat etmemiz gerek güvenlik unsurlarından bahsedeceğim.
Konunun takip edilmesi beğenilmesi söz konusunu olursa konu hakkında devam dersleri yazmayı düşünüyorum.
Dersimize başlayalım
Öncelikle tüm kod yazan insanların -insan olmasından kaynaklanan bir durum olduğu için- hata yapabileceği inancındayım.Ne kadar uzman olursa olsun ne kadar uzun tecrübelere sahip olursa olsun hata kaçınılmazdır.Bu hata bazen kritik seviyede bir açık barındırır,bazen de basit bir notice dir.
Php scriptlerimizi kodlarken hatalarımızı görmek için error_reporting() fonksiyonunu kullanılırız.
Kod:
ini_set('error_reporting', E_ALL | E_STRICT);
 ini_set('display_errors', 'Off');
 ini_set('log_errors', 'On');
 ini_set('error_log', '/usr/local/apache/logs/error_log');
bu şekilde kullandığınızda hatadan haberdar olursunuz ama hatayı ekrana basmayacaktır.
Kötü niyetli kişilerin "heker,Attacker" vs kullandığı ilk yöntem siteyi hata vermeye zorlamaktır.Hata alırsa aldığı hata neticesinde kullanabileceği açıkları aramaktadır.Sql İnj. Xss vs gibi...
Güvenlik bir bütündür ve hataların ekrana basılmaması hatanın olmadıgı anlamına gelmez.Bu hataların ivedilikle önem derecesine göre düzeltilmesi gerekir.
Php sizlere başka bir fonkisyon daha sunmaktadır.
Kod:
function my_error_handler($number, $string, $file, $line, $context)
 {
 $error = "= == == == ==\nPHP Hatası\n= == == == ==\n";
 $error .= "Number: [$number]\n";
 $error .= "String: [$string]\n";
 $error .= "File: [$file]\n";
 $error .= "Line: [$line]\n";
 $error .= "Context:\n" . print_r($context, TRUE) . "\n\n";
 error_log($error, 3, '/usr/local/apache/logs/error_log');
Bu şekilde hata kayıtlarını hangi dosyanın kaçıncı satırında ne hatası verdiğini kolaylıkla bulabilirsiniz.
Bir diğer husus post verilerimizdir.Hemen hemen her projemizde kullandığımız post bizim için bulunmaz bir nimetken bizim en büyük düşmanımız haline gelebilir.
PHP:
 <?php
 $filename = $_POST['filename'];
 while (strpos($_POST['filename'], '..') != = FALSE)
 {
 $filename = str_replace('..', '.', $filename);
 }
 ?>
Burada posttan gelen filename'i doğrudan filename değişkenine atayıp o şekilde kullanırsak ve filename bize posttan .../.../etc/passwd şeklinde gelirse ne olur?
Sunucumuzda bulunan tüm hesapların pass hashlerinin tutulduğu dosyaya erişim sağlamaz mı?
peki basit bir while döngüsü ve strpos ve str_replace fonksiyonlarımızı kullanarak ne yapıyoruz. gelen veriyi filtreliyoruz.Dolayısıyla başlangıç seviyesinde de olsa bir güvenlik tedbiri alıyoruz.
En kısa sürede yeni doküman ile karşınızda olacağım.
Sorusu olanlara bu başlığın altından seviyeli bir şekilde sorabilir.
 

CanerErgez

0
İyinet Üyesi
Katılım
28 Mayıs 2014
Mesajlar
131
Reaction score
0
Kesinlikle Takipteyim En Önemli Sorunlarım Bunlar Şu Anda PHP Konusunda . Dilerseniz Yazar Olarak Siteme Yayın Yapabilirsiniz :)

Detaylı Bilgi İçin PM Ile Görüşebiliriz ...
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst