rifizm، ممكن تضع مثال -كود- لطريقة الحماية هذه؟
__________________
محمد حمود.
حسنا ، نسيت ان اوضح اني اعمل على اطار العمل codeigniter
على اي هذه طريقة مختصرة لما قمت به
و بمساعد الأخ الكريم أحمد و هو نفسه المتطفل ، تم تجاوز طريقته ، لكن استخدام الكابتشا افضل ...كود PHP:
<?
//في الموديل :
class Mod_Main extends Model
{
function GO($code)
{
$query = $this->db->where('code', $code);// الحقل الذي فيه اختصار الرابط
$query = $this->db->get('links');// الجدول الخاص بحفظ الروابط
return $query;
}
//.................
}
// في الكنترول :
class Main extends Controller {
function Main()
{
parent::Controller();
//................................
}
function Index()
{
//................................
}
function GO($code)
{
// http://site.com/index.php/main/go/كود الإختصار
// يتم تحويل الرابط بال htaccess الى http://site.com/كود الإختصار
$data['GO'] = $this->Mod_Main->GO($code);//جلب الموديل function GO($code)
if ($data['GO']->row()->ex_do != ''){ // إذا لم يكن الحقل ex_do (exclusive domain) فارغا
$session = array(
'SESSION_NAME1' => 'SESSION_VALUE1',
);// SESSION_VALUE1 = معلومات عن الموقع الذي تم التحويل منه بعد التأكد
$this->session->set_userdata($session);// إنشاء جلسة أو أكثر
}
$this->load->view('main/view_go',$data);//جلب ملف الفيو View main/view_go
}
function Secure()
{
// الحصول على الدومين الذي تم التحويل منه
$ref_domain = str_replace('http://','',str_replace('http://www.','',str_replace('https://','',str_replace('https://www.','',@$_SERVER['HTTP_REFERER']))));
$num_slash = strpos($ref_domain, "/");
$net_domain = substr($ref_domain, 0, $num_slash);// $net_domain = الدومين نظيف دون سلا و لا بادئة (site.com)
if ($net_domain == $_SERVER['HTTP_HOST'] and $this->session->userdata('SESSION_NAME1')){ // اذا لم يكن التحويل من نفس موقعي فسيقوم بحذف الجلسة
// لا يوجد مشكل :) هنا يمكن التحويل الى الرابط المحمي او وضعه في رابط
}else{
$this->session->unset_userdata('SESSION_NAME1');// حذف الجلسة
$this->load->view('main/view_no_permission');//جلب ملف الفيو View main/view_no_permission
}
}
دمتم !
التعديل الأخير تم بواسطة خالد الحضري ; 09-11-2009 الساعة 02:17 PM
طيب عزيزي . هنا الكود يحصل على عنوان ال referrer و على اساسه يقوم بجلب الرابط
و عنوان الرفيرر يتم ارساله مع الrequest، يعني ممكن ان الزائر يعدل عليه كما يريد.
* الشيء الذي يصعب تجاوزه هو الكابتشا، او بعض الأسئلة. حيث يحلها الزائر بسهوله، لكنا تحتاج لذكاء اصطناعي كبير لتجاوزها عن طريق برنامج.
__________________
محمد حمود.
نعم أخي ، ركبت الكابتشا و هي أفضل حل في الوقت الحالي
شكرا على المساعدة ،
حبا في المعرفة ، أريد ان أعرف هل يوجد طريقة للتفريق بين الإتصال من الزائر و الموقع ، مثلما قال أخي ضيف ؟
المقصود ان الزائر قد يلجأ لتغيير الip الخاص به حتى لا تمنعه من خلال موقعك. و يتم ذلك باستخدام جهاز آخر كوسيط بين موقعك و جهازه.
وهذا باستخدام بروكسي او باستخدام شبكة tor
تفضل هذه مشاركة يشرح فيها الاخ ضيف الموضوع بشكل افضل:
http://www.swalif.net/softs/swalif45...1/#post1870949
__________________
محمد حمود.
طيب أخي الكريم ، أخذت فكرة
شكرا لكم جميعا ، بالنسبة للحل النهائي ، قمت بتركيب الكابتشا ، تسجل جلسة واحدة فقط
دمتم في رعاية الله أعزائي