• 16-12-2021, 11:55:17
    #10
    Müdür Dediğin gibi yaptım ama yine aştılar

    ghergedan adlı üyeden alıntı: mesajı görüntüle
    formun içindeki hidden aid alanına belirlediğiniz parolayla şifrelediğiniz değeri yazın;
    $key = '123456'; // şifreleme için kullanılacak parola
    $val = 1453; // kullanıcı id'si
    $encrypt_aid = openssl_encrypt($val, "AES-128-ECB", $key);
    post ettiğiniz sayfada da gelen değeri parolanızla çözüp kontrolünü sağladıktan sonra eğer eşleşen kullanıcı varsa mesajı gönderirsiniz;
    $key = '123456'; // şifreleme için kullanılacak parola
    $val = $_POST['aid']; // kullanıcı id'si
    $decrypted_aid = openssl_decrypt($val, "AES-128-ECB", $key);
  • 16-12-2021, 14:30:15
    #11
    Üyeliği durduruldu
    Üyelerin mesajlaşma hakkı olduğu için yabancı da olsa üye olduğunda mesaj gönderebiliyor doğru anladım sanırım.
    Ama siz toplu mesaj gönderimi yaptıklarını düşünüyorsunuz. Spam yapılıyor üye olunarak umarım bunu da doğru anlamışımdır.

    Hangi üye gerçek hangi üye spam için kayıt oldu bunu tespit edemezsiniz. Ama toplu gönderime en azından şu şekilde bir çözüm üretebilirsiniz.
    Mesaj gönderim zamanını saniye cinsinden yazdığınızı düşünüyorum.
    Kişilere yalnızda 1 dakika içerisinde 1 defa mesaj gönderebilecekleri şekilde bir kural koyun. Eğer toplu mesaj gönderimi yapan bir sistem kullanılıyor ise ilk mesajından sonra sorguyu durdurmaya zorlayarak uyarı metninizi çıkartın işlem yaptırmayın.

    Durumu doğru anladıysam şifreleme mantığı çözüm değil. Çünkü üye olan herkes aynı kümede şifre kime göre önlem olacak.
  • 17-12-2021, 00:46:14
    #12
    Adalente adlı üyeden alıntı: mesajı görüntüle
    Müdür Dediğin gibi yaptım ama yine aştılar
    sayfa kaynağında şifrelenmiş id'ler apaçık görünüyor.

    <input type="hidden" name="aid" value="lG2BxTFlIid/Dz+dBUYS+Q==">
    ufak bir script ile tüm ilanlar taranıp bu id'lere ulaşılabileceği için bu şekilde şifrelemenin hiçbir manası kalmıyor. çözüm; şifreleme için kullandığınız keyi belirli aralıklarla güncelleyin ya da her oturum için random bir key belirleyin. ayrıca form kontrollerinizi gözden geçirin ve mesajlaşma için bir sınırlamanız yoksa makul bir sınırlama getirin.

    mesajların hiç ilanı bulunmayan kullanıcılara gidip gitmediğini kontrol edin. eğer bu mesajlar onlara da gidiyorsa, probleminiz maalesef başka bir yerde.
  • 17-12-2021, 02:26:50
    #13
    1. CSRF token kullanın.
    2. Flood protection uygulayın. (Rastgele bir arama ile bulduğum şu kütüphaneyi inceleyebilirsiniz: https://github.com/frdl/php-floodprotection)
    3. Form action adresini her kullanıcı için ayrı bir url olacak şekilde düzenleyin. (submit adresini javascript dosyasında yazmak yerine form action'a yazın. Örneğin her kullanıcı için url'ye kendi belirlediğiniz bir signature ekleyin.

    Son söylediğimi örneklendirecek olursam:
    - 144 id li Ahmet isimli ve ahmet@mehmet.com epostalı kullanıcı için url şu şekilde olur : islem/mesaj.php?signature=6a1fbea4091fc5dc7a70cf80c59039 6b
    - 172 id li Ayşe isimli ve ayse@fatma.com epostalı kullanıcı için url ise şu şekilde olur: islem/mesaj.php?signature=a5ee46d795a1c69c2645938b02d345 88

    Buradaki signature oluştururken kullanacağınız SALT her sayfa yenilemede değişeceği için bir mesaj gönderildiğinde, ikinci mesajda signature geçersiz olacak ve toplu mesajın önüne geçmiş olacaksınız.
  • 17-12-2021, 14:18:32
    #14
    signature=6a1fbea4091fc5dc7a70cf80c590396b

    Burdaki imzaları neye göre değişmem lazım ? ve neye göre kontrol yapmalıyım ? Her Kullanıcıya sql bir alan açıp bir imzamı oluşturayım ?

    fatihemre adlı üyeden alıntı: mesajı görüntüle
    1. CSRF token kullanın.
    2. Flood protection uygulayın. (Rastgele bir arama ile bulduğum şu kütüphaneyi inceleyebilirsiniz: https://github.com/frdl/php-floodprotection)
    3. Form action adresini her kullanıcı için ayrı bir url olacak şekilde düzenleyin. (submit adresini javascript dosyasında yazmak yerine form action'a yazın. Örneğin her kullanıcı için url'ye kendi belirlediğiniz bir signature ekleyin.

    Son söylediğimi örneklendirecek olursam:
    - 144 id li Ahmet isimli ve ahmet@mehmet.com epostalı kullanıcı için url şu şekilde olur : islem/mesaj.php?signature=6a1fbea4091fc5dc7a70cf80c59039 6b
    - 172 id li Ayşe isimli ve ayse@fatma.com epostalı kullanıcı için url ise şu şekilde olur: islem/mesaj.php?signature=a5ee46d795a1c69c2645938b02d345 88

    Buradaki signature oluştururken kullanacağınız SALT her sayfa yenilemede değişeceği için bir mesaj gönderildiğinde, ikinci mesajda signature geçersiz olacak ve toplu mesajın önüne geçmiş olacaksınız.
  • 17-12-2021, 16:59:11
    #15
    Her kullanıcı için alan açmanıza gerek yok şu şekilde oluşturup aynı yöntemle validasyon yapabilirsiniz.

    md5($userId.$userEmail.$randomKey.date(‘Y-m-d’, time()))