İyinet'e Hoşgeldiniz!

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

Kayıt Ol!

IP ile güvenlik sağlama

Trumb

0
İyinet Üyesi
Katılım
27 Mayıs 2008
Mesajlar
14
Reaction score
0
Merhaba arkadaşlar aranıza yeni katıldım ve burada kalıcı olmak istiyorum.
Ben şu sıralar PHP öğrenmeye çalışıyorum.
Siz ustaların desteğiyle bir kaç uygulama yapabileceğimi düşünüyorum. :)

Ben şimdi bir yorum scripti yazdım. IP ve Tarihi veri tabanına kayıt ettiriyorum. Ancak güvenlik açısından aynı IP'den 5 dakika geçmeden yorum yazılmasına izin vermemem gerek. Bunu nasıl yapabilirim acaba?
Teşekkürlerimi sunuyorum şimdiden. :)
 

eRLySL

0
İyinet Üyesi
Katılım
25 Mart 2008
Mesajlar
424
Reaction score
1
Bunu cookie ile yapabilirsiniz. Yorum formunun bulunduğu sayfaya aşağıdaki kodu yazın..

PHP:
<?php

ob_start();
session_start();
setcookie("cookieadi","cookiedegeri",time()+300,"/");
?>

Bu sayede 5 dk.lik bir cookie oluşturduk. Şimdi izinleri oluşturun

PHP:
<?php
ob_start();
session_start();

if($_COOKIE[cookieadi]=="cookiedegeri") {
echo "5 dk. içerisinde birden fazla yorum yazamazsiniz!";
} else {

// yorum formu

}

?>

Kolay gelsin.
 

Trumb

0
İyinet Üyesi
Katılım
27 Mayıs 2008
Mesajlar
14
Reaction score
0
Merhabalar, ilginiz için öncelikle teşekkür ederim.
Ancak kullanıcılarım cookie ayarlarını kapatırlarsa bu kod işime yaramaz gibi.
Ben potansiyel hek saldırılarından kurtulmak için direk IP'yi işleme tabi tutan bir şeyler bakıyordum.
Ama gerçekten size minettarım yardımınız için.
 

eRLySL

0
İyinet Üyesi
Katılım
25 Mart 2008
Mesajlar
424
Reaction score
1
Merhabalar, ilginiz için öncelikle teşekkür ederim.
Ancak kullanıcılarım cookie ayarlarını kapatırlarsa bu kod işime yaramaz gibi.
Ben potansiyel hek saldırılarından kurtulmak için direk IP'yi işleme tabi tutan bir şeyler bakıyordum.
Ama gerçekten size minettarım yardımınız için.

PHP:
<?php
$ip = getenv("REMOTE_ADDR");
$sql = mysql_query("select * from yorum where ip='".$ip."'");
$pr = mysql_fetch_array($sql);

if($pr[zaman]-date("h:i:s")>=5) {
// yorum
} else {
echo "5 dk. içerisinde birden fazla yorum yazamazsiniz";
}
?>
 

Trumb

0
İyinet Üyesi
Katılım
27 Mayıs 2008
Mesajlar
14
Reaction score
0
Veritabanına kullanıcının ilk yorum yazdığı tarih yazılıyor.
Bilgisayarından tarihi değiştirse bişey değişmez.
Sunucunun saatini işleme alıyor çünkü.
Bu arada tekrar teşekkür ediyorum ve bu kodu deneyeceğim.
 

Trumb

0
İyinet Üyesi
Katılım
27 Mayıs 2008
Mesajlar
14
Reaction score
0
Bu scriptte sadece saati alıyoruz.
Acaba gece yarısı yorum yazsalar scriptin afallama durumu söz konusu olur mu?
01:30'da yorum yazıldığını düşünsek mesela.
 

eRLySL

0
İyinet Üyesi
Katılım
25 Mart 2008
Mesajlar
424
Reaction score
1
Bu scriptte sadece saati alıyoruz.
Acaba gece yarısı yorum yazsalar scriptin afallama durumu söz konusu olur mu?
01:30'da yorum yazıldığını düşünsek mesela.

Sorun olacagini sanmiyorum, zaten IP bazlı sorguluyor saati. Ama tarihi alın derim ben her ihtimale karşı
 

apostle

0
İyinet Üyesi
Katılım
15 Eylül 2006
Mesajlar
516
Reaction score
0
Konum
BendeBilmiyorum
PHP:
$simdi = time();
$sonra = time() + 5*60;
if($simdi > $sonra){
// yorum işlemleri
}
else{
// yorum yapılamaz
}
 

LacremeL

0
İyinet Üyesi
Katılım
16 Ocak 2007
Mesajlar
86
Reaction score
0
Bu nasıl kullanılıyor?
Biraz detaya inmeniz mümkün mü acaba?

veri tabanina girerken $simdi degerini de girersin. daha sonra yorum yazilacak sayfada bunu kontrol ettirirsin.
PHP:
$ozaman = mysql_result($sql,0,ozaman); //Mesaji yazdigi zaman
$buzaman = $ozaman + 5*60;  //Mesaj yazdigi zamana +5 dkk ekle
$simdi = time(); //Şu an saat kaç
if($simdi > $buzaman){ //Kontrol
// yorum işlemleri
}
else{
// yorum yapılamaz
}
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
Not: asagidaki kodlari biraz once yazip derledim, test edip denemeye vaktmi olmadi, yazim yada mantik hatasi olabilir!

Kod:
1. MySQL de ip_guvenlik tablosunu asagidaki sekilde yaratin:

create table ip_guvenlik (tarih datetime, ip varchar(15));
create index ip_guvenlik_idx1 on ip_guvenlik (ip);

2. PHP kodunuzun icine asagidaki fonsiyonu ekleyin:

function ip_bloklumu() {

   // Ornegin 2 saat bloklamak icin asagidaki degerleri 2 ve 'HOUR' olarak degistiriniz. 

   $blok_suresi = 5;
   $zaman_dilimi = 'MINUTE'; // MINUTE=dakika, HOUR=saat

   $ip = FALSE;
   $bloklandi = FALSE;

   if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
       $ip = $_SERVER["HTTP_CLIENT_IP"];
   }
  
   if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

       $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
       if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }

       for ($i = 0; $i < count($ips); $i++) {
           if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {
               if (version_compare(phpversion(), "5.0.0", ">=")) {
                   if (ip2long($ips[$i]) != false) {
                       $ip = $ips[$i];
                       break;
                   }
               } else {
                   if (ip2long($ips[$i]) != -1) {
                       $ip = $ips[$i];
                       break;
                   }
               }
           }
       }
   }

   $ip = ($ip ? $ip : $_SERVER['REMOTE_ADDR']);

   mysql_query("delete from ip_guvenlik where tarih < date_sub(NOW(), INTERVAL $blok_suresi $zaman_dilimi)");

   $ip_varmi = mysql_query(select 1 from ip_guvenlik where ip = '$ip');
   if(mysql_num_rows($ip_varmi)) {
    $bloklandi = TRUE;
   } else {
    mysql_query("insert into ip_guvenlik values(NOW(),'$ip')";
   }

   return $bloklandi;
}

3. PHP kodunuzda bloklamayi yapacaginiz yerde asagidaki sekilde kontrol yapmaniz yeterli:

if(TRUE === ip_bloklumu()) {
    die("Son 5dk icinde mesaj postalamistiniz!");
}
 

Trumb

0
İyinet Üyesi
Katılım
27 Mayıs 2008
Mesajlar
14
Reaction score
0
İyinet özel alâkan için çok teşekkür ederim.
Ama şu koda bakınca kendimi çok kötü hissettim, ben nasıl öğrenicem bu kadar şeyi ya? :(
 

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