folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder [Döküman] - PHP İle Güvenlik Kodu Yapımı



[Döküman] - PHP İle Güvenlik Kodu Yapımı

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    renegadealien
    renegadealien's avatar
    Üstün Hizmet Madalyası Savaş Madalyası Başarı Madalyası Üstün Hizmet Madalyası Developer Madalyası
    Kayıt Tarihi: 23/Mart/2003
    Erkek

    Güvenlik kodu uygulamaları anti-spam amaçlı yazılırlar.Biz bu dökümanda php ile  güvenlik kodu uygulaması yapıcaz.Kullanıcağımız başlıca fonksiyonlar : session,rand(),isset,unset.
    Toplam 2 adet php dosyamız olucak bunlar c.php ve c1.php

    ### c.php içeriği :

    <?
    session_start(); # session başladı.
    
    if(!isset($_SESSION['guvenlik']))
    {
    $_SESSION['guvenlik'] = rand(1,10); # guvenlik değerine 1 ile 10 arası bir değer verdik,her yenilenmede kaybolacağından session yardımıyla bunu önledik.
    $g1 = $_SESSION['guvenlik'];
    }
    if(!isset($_SESSION['guvenlikk']))
    {
    $_SESSION['guvenlikk'] = rand(1,10); # guvenlikk (2. rastgele değer)
    $g2 =  $_SESSION['guvenlikk'];
    }
    
    $kacyapar = $g1+$g2; # değerlerimizi topladık (+ = toplama, - = çıkartma, * = çarpma , / = bölme)
    $x = "+";
    
    
    echo "<form name=\"siradanform\" method=\"post\" action=\"c1.php\">
      <p>
        <input type=\"text\" name=\"sahilGuvenlik\" value=\"$g1$x$g2 = ?\" />
     </p>
      <p>
        <input type=\"submit\" name=\"ok\" value=\"OK\" />
      </p>
    </form>";
    ?>


    ### c1.php içeriği :

    <?
    
    require_once 'c.php'; # c.php i monte ettik.
    
    $kirk = $_POST['sahilGuvenlik']; # verileride monteleyelim.
    $g1 = $_SESSION['guvenlik'];
    $g2 =  $_SESSION['guvenlikk'];
    
    $kacyapar = $g1+$g2; # burdada verileri toplattık
    
    if($kirk==$kacyapar) { # eğer doğru girerse tahribat.com anasayfaya atıcak
    
    header("Refresh: 0; url=http://www.tahribat.com");
     }
    elseif(empty($kirk)) { # direkt c1.php çağrılırsa veya uyanık kullanıcı değeri boş bırakırsa hatayı yazdırıp tekrar c.php e atıcak
    
    echo "<script type=\"text/javascript\">
    alert(\"Güvenlik Kodu Girilmedi \");
    </script>";
    header("Refresh: 1; url=c.php");
    
    }
    
    else { # yanlış girerse js ile hatayı yazdırıp tekrar c.php e atıcak.
    
    echo "<script type=\"text/javascript\">
    alert(\"Güvenlik Kodu Doğru Değil \");
    </script>";
    header("Refresh: 1; url=c.php");
    }
    
    unset($_SESSION['guvenlik'],$_SESSION['guvenlikk']); # burdada session öldürüyoruz
    
    ?>




    Yukarıdaki uygulama text kutucuğuna soruyu yazdırır,bu aslında bot ve spam a karşı tam çözüm değildir.Bot value değerini okuyup size spamları postalayabilir (:
    Spam olayını tamamen kaldırmak için güvenlik sorusunu resim formatında ekrana bastırmanız gerekiyor (jpeg) onun ile ilgili dökümanı zorkaya isimli arkadaş yazmış ( http://www.tahribat.com/Dokuman-Php-Ile-Resim-Olusturma-310/ ) ordaki uygulamayı burdaki uygulamayla birleştirmek için dökümanda yer alan ImageString değerine "$g1$x$g2" vermeniz yeterlidir,böylece güvenlik sorusu .jpeg formatında ekrana yazdırılır ve spam girişimleri engellenmiş olur.(kafanız karışmasın diye ben jpeg formatında ekrana bastırmadım eğer isterseniz kolay bir şekilde monte edebilirsiniz yada pm atın ben sizin yerinize monte edim)


    Sanıyorum kendi atasözümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Söyleyeni belli olduğu için(Ben) atasözü değil, özlüsöz oluyormuş, dolayısı ile kendi özlüsözümü yapmış oldum :)
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    hackworm
    hackworm's avatar
    Kayıt Tarihi: 09/Ekim/2009
    Erkek

    eline sağlık. re-captcha entegrasyonu varken gerek varmıydı acaba bu algoritmaya ?

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Holyzone
    Holyzone's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 13/Ekim/2008
    Erkek

    Elines ağlık code libraryme attım

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    exception
    exception's avatar
    Kayıt Tarihi: 20/Aralık/2009
    Erkek

    (bkz: asp ile güvenlik kodu yapımı)

    Bir üye girişinde genelde 2 form alanı vardır.Kullanıcı Adı & şifre buna bir de Güvenlik alanı ekliyoruz ve diğer sayfada güvenlik şifresini kontrol ediyoruz.Uygulama 2 asp dosyasından oluşmaktadır.Kodlar üzerinde küçük oynamalarla kendinize göre düzenleyebilirsiniz.

    Form.asp

    <%

    ‘Güvenlik parolasının uzunluğunu 1. satırdan
    ‘Parola içinde harf olup olmayacağını 2. satırdan
    ‘Parola içinde sayı olup olmayacağını 3. satırdan
    ‘Ayarlıyoruz bu arada 1 evet 2 hayır anlamına geliyor (2. & 3. satırlar için)

    ParolaUzunluk=5
    strHarf=1
    strSayi=1

    ‘Burada karmaşık bir şifre üretecek fonksiyonumuz var

    Function SifreUret(KarekterMiktari, RakamOlacakmi, strHarf)
    Harfler=Array(“A” ,”B” ,”C” ,”D” ,”E” ,”F” ,”G” ,”H” ,”I” ,”J” ,”K” ,”L” ,”M” ,”N” ,”P” ,”Q” ,”R” ,”S” ,”T” ,”U” ,”V” ,”W” ,”X” ,”Y” ,”Z” )
    Rakamlar=Array(“1″ ,”2″ ,”3″ ,”4″ ,”5″ ,”6″ ,”7″ ,”8″ ,”9″ )
    If RakamOlacakmi = “1″ AND strHarf = “1″ Then
    Kontrol = “3″
    ElseIf RakamOlacakmi = “1″ Then
    TempK = “2″
    ElseIf strHarf = “1″ Then
    TempK = “1″
    End If
    i = DatePart(“s” , Now)+2 : Do While i > j : j=DatePart(“s” , Now) : Loop
    Randomize Timer
    For I = 1 To Int(KarekterMiktari)
    If Kontrol = “3″ Then TempK = Int((Rnd * 2) + 1)
    If TempK = 1 Then
    TempPass = TempPass & “” & Harfler(Int((Rnd * 25) + 0))
    ElseIf TempK = 2 Then
    TempPass = TempPass& “” & Rakamlar(Int((Rnd * 9) + 0))
    End If
    Next
    SifreUret = TempPass
    End Function
    ‘şifre üreten fonksiyonumuz bitiyor

    ‘Üretilen şifreyi Ekrana Yazdıracağımız Fonksiyonumuz
    Function ParolaYazdir(Veri)
    For i = 1 To Len(Veri) : TBT = Mid(Veri,i,1)
    Response.Write”" & TBT &”"
    Next
    End Function
    ‘Bu Fonksiyonumuzda Bitiyor

    ‘Session nesnemize şifremizi atıyoruz & sonra yazdırıyoruz
    Session(“Parola” ) = SifreUret(ParolaUzunluk,strSayi,strHarf)
    ParolaYazdir Session(“Parola” )
    %>
    <form action=”kontrol.asp” method=”get”>
    Lütfen yukarıdaki güvenlik kodunu aşağıdaki alana yazınız.<br>
    <input type=”text” name=”frmParola” size=”20″><input type=”submit”>
    </form>

    Gördüğünüz gibi form.asp sayfasının yapısı bu şekilde.Fonksiyonları anlamasanızda olur önemli olan ben bu sayfada işlemi normal yazı şeklinde yazdırdım.Siz belki resim şeklinde yazdırmak isteyebilirsiniz.Ya da sitenizin tasarımına uygun bir hale getirmek isteyebilirsiniz.İşte bu durumları “ParolaYazdir” Fonksiyonundan düzenliyoruz.Ve orda görmüş bulunduğunuz TBT kelimesi her bir parola karakterini temsil ediyor.Yani bunu resimle yapmak isterseniz oraya;

    <img src=resim_”& TBT &”.gif>

    gibi bir ifade kullanmanız gerekecek.Peki buradan gelen formu nasıl kontrol edeceğiz.

    Kontrol.asp

    <table width=”100%”>
    <tr>
    <td width=”50%”>Yazmanız Gereken Parola</td>
    <td width=”50%”><%=Session(“Parola” )%></td>
    </tr>
    <tr>
    <td width=”50%”>Yazdığınız Parola</td>
    <td width=”50%”><%=request(“frmParola” )%></td>
    </tr>
    <tr>
    <td width=”100%” colspan=”2″><b><%
    If Request(“frmParola” )=Session(“Parola” ) Then
    Response.Write”<font size=” “5″ ” color=” “#008000″ “>Denetimi Geçti</font>”
    Else
    Response.Write”<font size=” “5″ ” color=” “#FF0000″ “>Denetimi Geçemedi</font>”
    End If
    %></b>
    </td>
    </tr>
    </table>


    A man may be born, but in order to be born he must first die, and in order to die he must first awake.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kafkavari
    kafkavari's avatar
    Kayıt Tarihi: 24/Şubat/2010
    Erkek

    teşekkürler


    Mesele, Türkiye'nin şeftali yerine, motor üretmek istemesiydi. N. Erbakan
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Lathedarkman
    Lathedarkman's avatar
    Kayıt Tarihi: 05/Mayıs/2007
    Erkek

    eline beynine sağlık hoca işe yarar

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    mungabunga
    mungabunga's avatar
    Kayıt Tarihi: 09/Nisan/2011
    Erkek

    scratch


    ve bu konuda başka bir şey söylemeyeceğim...
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    CanKirca
    CanKirca's avatar
    Kayıt Tarihi: 11/Nisan/2009
    Erkek

    Rene'nin dökümanları da okumaya başladık, gidişat süper olacak.. ellerine sağlık hocam. tam da kullanabileceğim bir kod, şimdiden iş gördü bile :)


    Twitter: @CanKirca
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DE5TROY3R
    DE5TROY3R's avatar
    Kayıt Tarihi: 04/Nisan/2007
    Erkek

     

    eXceptioN bunu yazdı:
    -----------------------------



    Gördüğünüz gibi form.asp sayfasının yapısı bu şekilde.Fonksiyonları anlamasanızda olur önemli olan ben bu sayfada işlemi normal yazı şeklinde yazdırdım.Siz belki resim şeklinde yazdırmak isteyebilirsiniz.Ya da sitenizin tasarımına uygun bir hale getirmek isteyebilirsiniz.İşte bu durumları “ParolaYazdir” Fonksiyonundan düzenliyoruz.Ve orda görmüş bulunduğunuz TBT kelimesi her bir parola karakterini temsil ediyor.Yani bunu resimle yapmak isterseniz oraya;

    <img src=resim_”& TBT &”.gif>



    -----------------------------

    Resimlisi için böyle demişsin, sadece resim dosyasının adını değiştirmiyormu bu. Demek istediğim text olarak güvenlik kodunu verirse, programlarla rahatca okunabiliyor

     

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    exception
    exception's avatar
    Kayıt Tarihi: 20/Aralık/2009
    Erkek

    DE5TROY3R bunu yazdı:
    -----------------------------

    Resimlisi için böyle demişsin, sadece resim dosyasının adını değiştirmiyormu bu. Demek istediğim text olarak güvenlik kodunu verirse, programlarla rahatca okunabiliyor

    -----------------------------

    sadece örnek verdim orda kodlamaya dahil değil zaten isteyen kendine göre geliştirebilir hani, evet text olması kötü programlarla geçilebiliyor  (:


    A man may be born, but in order to be born he must first die, and in order to die he must first awake.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    biraz performans manyağı olduğum için bir kaç şey eklyim

    echo ile " yerine ' kullanmayı tercih edin.Değişkenleride şu şekilde (tek tırnakla ) kullanabilirsiniz;

    echo 'hebe', $degisken, 'que';

    bu sayede html karakterlerini kaçış olmadan kullanabilirsiniz.NE gibi ?

    echo '<a href="?/',$tik,'">Tıkla</a>';

    gibi.Burda çift tırnak içinde değişken kullanırsak önce kodu derler sonra ekrana basar.FAkat tek tırnakla kullanıp virgül ile bağlarsak sadece ekrana basar.Fakat tek tırnak kullanıp, nokta koyarsanız yine derler.

    Hea bir kaç mili saniye kazandırır.İhtiyaç varmı derseniz ayrı konu.FAkat şak şak açılan sayfalar için var sanırım :)

    bknz (google webmasterları böyle diyor)

    ----------

    rene: hocam seni php tarafında gördüm ya , vallahi sevindim.Darısı linux başınada.Dediğim gibi linux üstünde server+site bağını daha iyi yaklayıp güzel programlar yazacaınızı dşünüyorum.Daha verimli olacağınızı.E bizde bl bol faydalanabilirik :)

Toplam Hit: 1822 Toplam Mesaj: 11