2 sayfadan 1. sayfa

Unique Registration Hash - 0.1.0

İletiTarih: 24.08.2006, 13:11
sabri ünal
mod adı: Unique Registration Hash
mod yazarı: pentapenguin
mod versiyon: 0.1.0
mod açıklama: Bu mod. kayıt formu kabul şartnamesişndeki agreed=true seçeneğini bir şifreleme sistemiyle değiştirir. böylece spam botlardan gelen kayıtlara karşı bir koruma sağlar...

benim anladığım kadarıyla alfa seviyesi bir mod fakar problem çıkarmaz gibi...

Kod: Tümünü seç
##############################################################
## MOD Title: Unique Registration Hash
## MOD Author: pentapenguin < n/a > (Jeremy Conley) http://www.pentapenguin.com
## MOD Description: This MOD changes the "agreed=true" part of the registration
## form to a unique identifier to help stop spam bots from registering.
##
## MOD Version: 0.1.0
##
## Installation Level: Easy
## Installation Time: 5 Minutes
## Files To Edit: 1
## includes/usercp_register.php
##
## Included Files: N/A
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
##############################################################
## For security purposes, please check: http://www.phpbb.com/mods/
## for the latest version of this MOD. Although MODs are checked
## before being allowed in the MODs Database there is no guarantee
## that there are no security problems within the MOD. No support
## will be given for MODs not found within the MODs Database which
## can be found at http://www.phpbb.com/mods/
##############################################################
## Author Notes:
##
## Support for this MOD may be found at http://www.pentapenguin.com
## This MOD is EasyMOD friendly! (http://area51.phpbb.com/phpBB/viewforum.php?f=17)
##
##############################################################
## MOD History:
##
##   2006-08-19 - Version 0.1.0
##   - Initial release
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################


#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php


#
#-----[ FIND ]------------------------------------------
#
$unhtml_specialchars_replace = array('>', '<', '"', '&');


#
#-----[ AFTER, ADD ]------------------------------------------
#

// Begin Unique Registration Hash MOD by pentapenguin (http://www.pentapenguin.com)
$registration_hash = md5($userdata['session_ip'] . $userdata['session_id']);
// End Unique Registration Hash MOD by pentapenguin


#
#-----[ FIND ]------------------------------------------
#
   global $userdata, $template, $lang


#
#-----[ IN-LINE FIND ]------------------------------------------
#
$phpEx


#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, $registration_hash


#
#-----[ FIND ]------------------------------------------
#
      "U_AGREE_OVER13" => append_sid("profile.$phpEx


#
#-----[ IN-LINE FIND ]------------------------------------------
#
agreed=true


#
#-----[ IN-LINE REPLACE WITH ]------------------------------------------
#
agreed=$registration_hash


#
#-----[ FIND ]------------------------------------------
#
      "U_AGREE_UNDER13" => append_sid("profile.$phpEx


#
#-----[ IN-LINE FIND ]------------------------------------------
#
agreed=true


#
#-----[ IN-LINE REPLACE WITH ]------------------------------------------
#
agreed=$registration_hash


#
#-----[ FIND ]------------------------------------------
#
if ( $mode == 'register' && !isset($HTTP_POST_VARS['agreed']) && !isset($HTTP_GET_VARS['agreed']) )


#
#-----[ IN-LINE FIND ]------------------------------------------
#
!isset($HTTP_POST_VARS['agreed']) && !isset($HTTP_GET_VARS['agreed'])


#
#-----[ IN-LINE REPLACE WITH ]------------------------------------------
#
$HTTP_POST_VARS['agreed'] != $registration_hash && $HTTP_GET_VARS['agreed'] != $registration_hash


#
#-----[ FIND ]------------------------------------------
#
   $s_hidden_fields = '<input type="hidden"


#
#-----[ IN-LINE FIND ]------------------------------------------
#
name="agreed" value="true"


#
#-----[ IN-LINE REPLACE WITH ]------------------------------------------
#
name="agreed" value="' . $registration_hash . '"

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 21.03.2007, 02:48
butterflyT
Bu mod neden böyle kenarda kalmış anlamadım. Bence çok güzel bir mod. Eğer doğru anladıysam bot'a tabiri caizse şartname sayfasında patenaj çektiriyor.

Şöyleki standart olarak ben agree değişkenine 'true' sağ değerini atıyorum. Bot benim gibi insan olsa oturur bilgisayar başına linke tıklar ama o bunu yapmak yerine linke tıkladım misali agree değişkenine doğru değeri (1) atamaya çalışıyor. (1) atamaya çalışıyor çünkü true'nun buna karşılık geldiğini biliyor ve böylece kayıt formuna ulaşıyor.

Ancak MOD yazarı şöyle bir hile yapmış. true değeri yerine kullanıcının oturum id ile ip'sinden faydalanarak bir MD5 değeri üretiyor ve true değeri artık (1) değil bu değerdir diyor. O yüzden karşılaştırırken [syntax="php"]!isset($HTTP_POST_VARS['agreed']) && !isset($HTTP_GET_VARS['agreed'])[/syntax]bu satır yerine [syntax="php"]$HTTP_POST_VARS['agreed'] != $registration_hash && $HTTP_GET_VARS['agreed'] != $registration_hash[/syntax] bunu kullanıyor.

Sonra ne oluyor? Eğer siz gerçekten insansanız fiziksel olarak linke tıklayacağınız için sizin için üretilmiş MD5 hash'ı ile true değeriyle örtüşüyor ve kayıt sayfasına geçiyorsunuz. Ancak bot masa başına oturup fiziksel tıklama yapmadığı için true değerine karşı gelen (1) gönderiyor. Ama bakıyorki etki yapmadı tekrar denemek istiyor. Sayfayı yenilediğinde sid değişiyor dolayısıyla MD5 de değişiyor. Bu değeri bir kere de tutturması lazım. Çok akıllıca.

Bot kendi sid ve ip'sinden MD5 hash'ı üretildiğini anlarsa burayı geçebilir. Onun için
[syntax="php"]$registration_hash = md5($userdata['session_ip'] . $userdata['session_id']);[/syntax]
yerine
[syntax="php"]$registration_hash = md5(md5($userdata['session_ip'] . $userdata['session_id']));[/syntax] yazarsak hatta bu değere birşeyler ekleyip çıkarabilirsek tam güvenli olur. Algoritma bize has olacağı için bot'un çözmesi zorlasacak.

Ama MOD şu hali ile bile bence güzel. Yani temeli çok mantıklı geldi bana. En azından insanları iki de bir resimdeki karakterleri yaz, insansan 2+3=? kaç eder gibi acayip sorular sorup uğraştırmayız.

Hele text doğrulamanın hiçbir faydası yok! Düşünün Yahoo böyle bir uygulama yapsın. Bot yazarının Yahoo'yu bir kere ziyaret edip texti okuması yeterli. Ona göre bot yazar. Çünkü true değeri sabit, hiç değişmiyor. Bizim avantajımız şu oluyor genel olarak sitelerimiz Yahoo kadar mehşur olmadığından hangi bot yazan programcı oturacak da bizim kayıt anlaşması sayfasında yazdığımız text doğrulamayı kontrol edecek. Bunu bilmeyen bot tabi oradan bir engele takılıyor.

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 21.03.2007, 02:57
CrazYAngeR
butterflyT yazdı:Hele text doğrulamanın hiçbir faydası yok! Düşünün Yahoo böyle bir uygulama yapsın. Bot yazarının Yahoo'yu bir kere ziyaret edip texti okuması yeterli. Ona göre bot yazar. Çünkü true değeri sabit, hiç değişmiyor. Bizim avantajımız şu oluyor genel olarak sitelerimiz Yahoo kadar mehşur olmadığından hangi bot yazan programcı oturacak da bizim kayıt anlaşması sayfasında yazdığımız text doğrulamayı kontrol edecek. Bunu bilmeyen bot tabi oradan bir engele takılıyor.


Tamam doğru diyorsun ama bir şeyi atlıyorsun. Çoğu phpbb forum hemen hemen aynı görsel doğrulamayı kullanıyor. Tamam işi iblenler kendilerine göre bi doğrulama yapar ama standart kullanıcılar için bunu söylemek pek mümkün değil. Yani şöyle düşünelim. tam 200 forum aynı doğrulamayı kullanıyor. Adam birinden bakıp yaptığı zaman küt bu 200 üde yakalıyor.

Dediklerin ise doğru 2+2=? kaç eder gibi terimler pek düzgün değil ve benim kanatimce değer düşürür. Hele birde hatalı olursa....

Uzun lafın kısası yapan güzel bi mod yapmış. Tebrikler....

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 21.03.2007, 11:27
Motorist
Bence çok güzel bir mod. Zamanın da görsel kod doğrulamam hasarlı olduğu için kapatmıştım, bunu fırsat bilen lamerler hemen binlerce üye yaratmıştı. bende basit bir sql kodu ile bunu çözmüştüm. (e-posta doğrulamamışları sil!)

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 22.03.2007, 15:35
velociraptor
Motorist yazdı:Bence çok güzel bir mod. Zamanın da görsel kod doğrulamam hasarlı olduğu için kapatmıştım, bunu fırsat bilen lamerler hemen binlerce üye yaratmıştı. bende basit bir sql kodu ile bunu çözmüştüm. (e-posta doğrulamamışları sil!)

su SQL kodunu buraya vermeni rica etsem

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 22.03.2007, 19:19
Motorist
[syntax="sql"]DELETE FROM phpbb_users WHERE user_active = 0 AND user_id <> -1;[/syntax]

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 25.03.2007, 00:44
murtaza
Modu kurduktan sonra üye olmayak isteyenlerden BAZILARI invalid session_id hatasi aliyorlar.

Ne yapmaliyim?

Onlarca kez kurdum. Yine ayni hata.

Sevgiyle

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 25.03.2007, 22:55
butterflyT
Murtaza sende şu ziyaretçilerin session_id almasını engelleyen MOD kurulu mu? Hani Google'n siteni daha iyi indexlemisi için kolaylık sağlayan. Çünkü aşağıdaki kod da görüldüğü üzere programcı kayıt kontrol değerini
[syntax="php"]$registration_hash = md5($userdata['session_ip'] . $userdata['session_id']);[/syntax]
session_id ile belirliyor. Eğer o MOD kurulu ise o sorun yaratabilir. Kayıt olan kullanıcı ziyaretçi olduğundan sid değeri olmayacak. Kurulu değilse bile ve yine de bu hata geliyorsa yukardaki kodu istediğin gibi kurcalayabilirsin. Misal $userdata['session_id'] kısmını çıkartalım ve şöyle yapalım ...

[syntax="php"]$registration_hash = md5($userdata['session_ip'] . md5($userdata['session_ip']) . md5('bana bulasma bot'));[/syntax]

Takıl kafana göre. Nasıl metin doğrulamada kullanıcıdan 15+5=? hesaplamasını isteyip kendimize has bir metin seçiyoruz bu da aynı hesap kafana göre bir kayıt hash değeri oluştur. Büyük bir ihtimalle sorun yok olacaktır. Hatta yerel sunucuda bir 10-15 kayıt demesi yap.

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 27.03.2007, 02:30
velociraptor
Modu kurdum Mükemmel calisti hata yok gel gelelim spambot kayitlari devam ediyor (sanirim biri kasitli olarak elle giriyor) bu olabilirmi=?

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 27.03.2007, 05:06
murtaza
Hiiiii BUTTERFLLLLYYYY

Eveeeettt o mod bende kurulu , misafirlere session sheysini kapatma modu.

BANA BULASMA BOT yerine , ne yazmaliyim sadece onu bilmiyorum

Onuda söylermisin nooolluuurrr

$registration_hash = md5($userdata['session_ip'] . md5($userdata['session_ip']) . md5('bana bulasma bot'));

bana bulasma bot yerine ne olmali?????????

Sevgiyle

edit_ dosya ektedir bir bakarmisin ne olur sana zahmet

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 27.03.2007, 18:45
butterflyT
Murtaza sana aynen dediğim gibi de kullanabilirsin. md5('bana bulasma bot') sana rastgele bir kod üretecek. '' arasına istediğin kelimeyi cümleyi yaz. Ben o kodu sana örnek olsun diye yazdım, özel birşey değil yani. Benim sana anlatmak istediğim şey $registration_hash bir sol değerdir yani değişken adıdır. Sağ dereğe ise istediğin gibi kafana göre bir değer atayabilirsin.

$registration_hash = md5($userdata['session_ip'] . md5($userdata['session_ip']) . md5('bana bulasma bot')); bu başka bir değer üretir

$registration_hash = md5($userdata['session_ip'] . md5($userdata['session_ip']) . md5('bot benden uzak dur')); başka değer üretir.

istersen tümünü son bir kez daha md5 içine al,

$registration_hash = md5(md5($userdata['session_ip'] . md5($userdata['session_ip']) . md5('bana bulasma bot'))); gibi ...

Maksat phpBB'de olan standart 'true' değeri yerine tahmin edilmesi zor 32 haneli bir dizi üretmek.

velociraptor
sen de dediğim gibi registration_hash değerini kendine has bir şekilde değiştirebilirsin. Amma buda yetmiyor sürekli botlar bir şekilde geliyorsa bu MOD'a ek olarak Textual Confirmation, Metin doğrulama MOD'unu da kur. Aslından bu MOD'un kesmesi lazım ancak bot'lar nasıl çalışıyor algoritmaları nasıl onu da tam bilmiyorum. Dolayısıyla %100 güvenlik diye birşey yok.

Tahminimce bot'lar hiç bir doğrulama olaylarına girmeden siteye bir şekilde üye oluyorlar ya da mesaj atıyorlar. Bana öyle geliyor çünkü 32 haneli bir diziyi bir kerede tahmin etmek çok zor. Bot büyük bir ihtimalle buralara bulaşmada başka yollarden geçerek siteye üye olabilir. Yani biz burayı istediğimiz kadar yamayalım phpBB'de başka bir açık varsa kurtulamayız.

Bir de sitelerinizi linklerini sağa sola abuk sabuk yerlere reklam olsun diye vermeyin. Çok tanınmak iyi ama bu şekilde botlara davetiye çıkıyor. Yani biri var hiç antivirüs programı yok ama hiç virüs bulaştırmıyor kendine, biri var 2 programı var yine de bilgisayarın sağı solu virüs içinde. Bilgisayarınızı da sitenizi de mantıklı birşekilde kullanıp yönetin.

Textual Confirmation ek olarak Advanced Visual Confirmation da kurabilirsiniz.

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 28.03.2007, 00:58
murtaza
Yaaaaa butterfly sana bisi diicem.

INVALID SESSION ID hatasini yani üye olunurken alinan hata icin canverde 4 baslik actim farkli variyasyonlarda. Kimse bulamamisti.

Ama sen varyaaaa sennn.

Yaaaaa coookkk ttesseekkküürrrllleeerrr.
Oldu be ya :lol: :lol: :lol:

Text confirmation modunu kurmayacam cünkü spam botlarla yada sürekli üyelik acan botlarla sorunum yok ADVANCED CAPTHA zaten kullaniyorum. Tek sorunum üyelerin INVALID SESSION ID hatasi almasi idi.

Ohhh sitemde tek bir hata vardi oda simdi sayende cözüldü
Tekrar cok cok tesekkürker

edit: Ama isin ilginc olani eski usercp_register'i attigimdada sorun vermiyor normalde eskisinde INVALID SESSION ID hatasi vermesi lazim degilmi , hem yenisinde , hem eskisinde sorun yok an itibariyle. Bazen sorun cikiyor demistim yaaa :roll:

ikinci edit:

Sorun bayagi bir halloldu ama yinede 4-5 üyelik actiktan sonra kendim yine bazen INVALID_SEESION_ID hatasi aliyorum acaba

Kod: Tümünü seç
   // session id check
   if ($sid == '' || $sid != $userdata['session_id'])
   {
      $error = true;
      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Session_invalid'];
   }

   $passwd_sql = '';


kodundaki

Kod: Tümünü seç
      $error = true;


degerini

Kod: Tümünü seç
      $error = false;


olarak degistirirsem önemli güvenlik acigi olursurmu kayitlarda?

Sevgiyle

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 28.03.2007, 11:52
butterflyT
Murtaza,
Ben de o misafir için Sid değerini ortadan kaldıran MOD kurulu olmadığı için MOD'un nereleri düzelediğini bilmiyorum. Ama verdiğin koda bakarsak ya o MOD'u kurarken ya eksik yer düzenledin ya da MOD yazarı programını eksik yazmış gibi geldi. Çünkü "if" yapısı içindeki kontrol kısmındaki şu ifade
[syntax="php"]$sid == '' || $sid != $userdata['session_id'][/syntax]
hatalı. Diyorki eğer (ziyaretçinin sid değeri yoksa veya ziyaretçinin sid olması gerektiği gibi değilse) true yani "1" değeri üret ve if yapısının içine gir, sonra hata=doğru yap ve hata mesajını yazdır.

Şimdi sen ziyaretçi için sid değerini iptal eden MOD'u kurdum diyorsun. Yani ziyaretçinin sid değeri olmazsa bu if yapısının kontrol değeri her zaman için 1 olur çünkü ($sid == '') sana her zaman 1 üretecek hata alacaksın. ($error = true;) bu değeri ($error = false;) böyle yapman birşey değiştirmez. Sadece ekrana hata mesajını yazdırmaz ama hata yine vardır ve ziyaretçi yine üye olamaz. Hata gelmesinin nedeni kurduğun mod yüzünden ziyaretçilerinin sid değerini alamaması ve ($sid == '') değerinin sürekli 1 üretmesi.

O yüzden orayı şöyle değiştirmelisin

[syntax="php"]// session id check
if ($sid != $userdata['session_id'])
{
$error = true;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Session_invalid'];
}

$passwd_sql = '';[/syntax]

yazdığın kısmı benim verdiğim kodla değiştir. Yaptığım tek şey oradan ($sid == '') ifadesini kaldırmak. Çünkü sid değerini kaldıran o MOD'u kurduktan sonra ziyaretçinin sid değeri var mı yok mu diye kontrol etmek gereksiz. Eskiden ziyaretçinin sid değeri var mı yok mu veya varsa olması gerektiği gibi mi diye kontrol ediyorduk artık sadece sid değeri olması gerektiği gibi mi diye kontrol ediyoruz. Ne nane yediğimizi anlayasın diye ayrıntılı yazdım.

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 31.03.2007, 23:32
kormali466
Bu modu *edited* ye bir türlü uyduramadım sürekli hata veriyor.Nasıl yapabiliriz acaba?

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 01.04.2007, 00:00
butterflyT
kormali466,
Nasıl hata veriyor ki?

ve buarada Murtaza sorunun çözüldü mü?

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 01.04.2007, 09:46
kormali466
bilmiyorum ama çok şekilde denedim.ama olmadı.kodlar burda bakan olursa size zahmet.

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 01.04.2007, 12:32
butterflyT
Hata yapmış olmayasın kodlar uzun ama bakabildiğim kadarıyla bir hata göremedim. Al bu dosyayı dene bakalım. Standart bir şekilde MOD'un kodlarını senin dosyana yerleştirdim.

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 02.04.2007, 13:24
murtaza
Butterfly sorun %60-70'lik basariyla ortadan kalkti ama yinede bazen sorun cikariyor.

Simdi misafirlere session id kaldirmasi icin kodu kurdum ya asagidaki gibi

Kod: Tümünü seç
#-----[ AÇ ]------------------------------------------
includes/sessions.php

#-----[ BUL ]------------------------------------------
   global $SID;

   if ( !empty($SID) && !eregi('sid=', $url) )

#-----[ Bulduğun Satırla Değiştir ]------------------------------------------
   global $SID, $HTTP_SERVER_VARS;

   if ( !empty($SID) && !eregi('sid=', $url) && !strstr($HTTP_SERVER_VARS['HTTP_USER_AGENT'] ,'Googlebot') && !strstr($HTTP_SERVER_VARS['HTTP_USER_AGENT'] ,'slurp@inktomi.com;'))

#
#-----[ Kaydet ve Kapa Bütün Dosyaları ]------------------------------------------
#
# EoM


Bu kod sadece REGISTER.PHP'de yada MODE_REGISTER bölümünde session id verilecek sekilde ayarliyabilirmisin acaba

Yani hicbir yerde misafire SESSION ID vermesin.
Sadece register yaparken session ID alabilsin kullanici.
Google nasil olsa kendini register yapmadiig icin siteye

Invalid session id hatasini bu yöntemle asabiliriz diye düsünüyorum.

Sevgiyle

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 02.04.2007, 13:41
ALEXIS
Kod: Tümünü seç
if (basename($_SERVER['SCRIPT_NAME']) == profile.php)
{
   // kodlar
}

Cvp: Unique Registration Hash - 0.1.0

İletiTarih: 02.04.2007, 15:19
kormali466
butterflyT kardeş ekteki dosyayı direk ftp ye attım, sadece kodlar gözüküyordu php.yani gene olmadı, benim sistem *edited*, acaba sorun bundan kaynaklanıyor olabilir mi?