मैं अपने मेलबॉक्स में हर रोज कि मैं तो मैं, नई सामग्री जोड़ने की गई साइटों को बनाए रखने, या नई साइटें (विशिष्ट कहानी सही) संयुक्त शुरू इसे हटाने और समय खर्च कर रहा था इतना स्पैम पाने के लिए इस्तेमाल किया. कुछ अपनी वेबसाइट स्पैम की, या, यह निवारणीय है, निवारण नहीं है, लेकिन प्रयोज्य और / या अच्छी जानकारी "बुरी चीजें में" के रूप में अच्छी तरह से पकड़ा जा रही की कीमत पर.
इसमें कोई संदेह नहीं है, अगर आप वेब के विकास के बारे में आप पैदा होने का और एक नियमित आधार पर रूपों के साथ बातचीत जा रहे हैं गंभीर हो. विशेष रूप से इस नई वेब हर क्या है ... आगे बढ़ना wiz, है 2.0 दृष्टिकोण के साथ कि?
कॅप्चा
कॅप्चा एक विधि ज्यादातर लोग आज स्पैम रोकने के लिए प्रयोग कर रहे हैं वह संख्या है. यह क्या है?
"एक कॅप्चा एक चुनौती प्रतिक्रिया परीक्षण कंप्यूटर पर जाँच करने के लिए प्रयोग किया जाता यदि उपयोगकर्ता मानव है. कि आगंतुक प्रकार के पत्र और एक विकृत छवि की संख्या कॅप्चा की है कि वेबसाइटों पर इस्तेमाल किया जाता है एक आम तरह की आवश्यकता होती है. जबकि यह बहुत मनुष्यों के लिए आसान है के लिए कंप्यूटर की छवि से मूल पाठ इस प्रकार निकालने के लिए यह विधि है कि मुश्किल है इस तथ्य पर आधारित है. "- Captchacreator.com
लिपियों के लिए Here'sa कुछ संसाधनों ताकि आप अपने रूपों में है कि कार्यशीलता को लागू करने में सक्षम हो जाएगा:
भागने डेटा - sql इंजेक्शन रोकें
अगर आप अपने फार्म हमले से असुरक्षित जा रहे हैं Capcha usless है. Addslashes के साथ फिल्टर पोस्ट तार करने के लिए याद है () या mysql_real_escape_string ().
यह भी जाँच के अन्य समान प्रकार के लिए उपयोगी हो सकता है कि इन कार्यों को देखो:
- htmlspecialchars () - निम्न वर्ण पलायन: &,',",>,< ... कि ampersand, एकल उद्धरण, दोहरे उद्धरण, से भी कम है, और प्रतीकों से अधिक है.
- strip_tags () को दी स्ट्रिंग से - स्ट्रिप्स बाहर सभी HTML और php code.
- htmlentities () - धर्मान्तरित ALL अक्षर अपने HTML संस्थाओं समकक्ष (इस करने के लिए एक अधिक htmlspecialchars के सभी संस्करण पकड़) है.
- urlencode () - एक विधि प्राप्त पर तार पारित करने के लिए यूआरएल Encodes. जैसा कि मैंने उल्लेख किया, स्वरूपों के साथ प्रयोग नहीं करते. यह तब होता है जब आप अन्य कारणों से उपयोगकर्ता इनपुट चर गुजर रहे हैं उपयोगी है.
याद है, एक बार आप इस उपर्युक्त कार्यों का एक का उपयोग कर की तरह डेटा convert, तुम पठनीयता और उत्पादन के लिए (उदाहरण के लिए) urldecode है इसके विपरीत कार्य करती हैं. Urlencode का उपयोग करके () ताकि आप स्ट्रिंग के रूप में उपयोग कर शुरू कर सकते हैं अपने कार्यों पर पानी फेर करने के लिए इसे पूर्ववत करें कर सकते हैं आप इस से पहले सांकेतिक शब्दों में बदलना होगा.
जाँच का अनुरोध विधि
एक तो अपने मौजूदा फार्म का प्रोसेसर के चारों ओर कथन है कि जाँच अगर डेटा को globals पोस्ट चर से आ रही है देखने के लिए फेंको. है, तो उपयोगकर्ता आपके प्रपत्र आप इसे इस्तेमाल किया जा करने के लिए डिज़ाइन तक पहुँचने का रास्ता नहीं है अगर नहीं.
-
<?php -
if ( $_SERVER [ ‘REQUEST_METHOD’ ] == ‘POST’ ) { -
//typical form processes -
} else { -
echo "The form can not be used like that" ;फार्म काecho "The form can not be used like that" ; -
} -
?> - डाउनलोड इस कोड: 0305spamrequestmethod.txt
अगर आपको लगता है कि बजाय प्रयोग कर रहे हैं इस बदलें प्राप्त करने के लिए. हालांकि, मैं उच्च के रूप में इसे और अधिक असुरक्षित है आपको लगता है कि विधि का प्रयोग कभी नहीं सुझा सकता है.
जाँच का अनुरोध स्रोत
आप भी अगर इस अनुरोध को अपने खुद के सर्वर से प्रारंभिक है देखने के लिए जाँच करनी चाहिए. इस फार्म का दुरुपयोग के जो जरूरी आप स्पैम प्राप्त होगा इसका मतलब यह नहीं है एक बहुत ही सामान्य विधि है. यदि आप सर्वर रहे हैं की एक बहुत कुछ हो रहा है उसके डिफ़ॉल्ट ईमेल करने के लिए आप किसी को इस तरह से अपनी साइट अपमान किया है मई ईमेल bounced.
-
<?php -
$source = $_SERVER [ ‘HTTP_HOST’ ] ; -
//or if you want to detect just the domain you can use a regular expression to filter it. -
$source = ereg_replace ( "^(www.)?([^.] ).[^.] $" , " \\ 2" , $_SERVER [ ‘HTTP_HOST’ ] ) ; -
if ( $source !== "robmalon.com" ) { -
echo "you are illegally accessing this script" ;इसecho "you are illegally accessing this script" ; -
} else { -
//typical form processes -
} -
//The referrer should also be from your own domain…Likewise, if there is no referral then the user obviously isnt using your form correctly (so we dont have to check for that). -
//Note: stristr() searches for the first occurrence of a string inside another string. -
if ( stristr ( getenv ( "HTTP_REFERER" ) , $source ) ) { -
//typical form processes -
} else { -
echo "you are illegally accessing this script" ;इसecho "you are illegally accessing this script" ; -
} -
?> - डाउनलोड इस कोड: 0305spamhostsource.txt
डेटा सत्यापन के लिए नियमित अभिव्यक्ति का उपयोग
मैं डेटा preg_match का उपयोग कर की जाँच करने के लिए तरह (या किसी भी नियमित अभिव्यक्ति कार्यों का). इस पद्धति का एक पत्थर के साथ पक्षियों के एक बहुत मारता है. क्यों की जाँच करने के लिए अलग से काम करता है लिख अगर एक स्ट्रिंग खाली है, तो फिर एक और अगर यह, और संख्याओं की अनुमति देता है एक और अगर यह अल्फा वर्णों की अनुमति देता है, और एक अन्य विशिष्ट क्षेत्र लंबाई करने के लिए, और दूसरा ... क्या तुम इस बात मिलता है.
अगर (! preg_match ("/^[ A-z0-9] (5,15 }$/", $ नाम)) $ त्रुटि .= "<li class=\"errors\"> का नाम कोष्ठक केवल अक्षर शामिल कर सकते हैं और संख्या (कोई रिक्त स्थान) और कर सकते हैं केवल 15 वर्णों तक का ही होना चाहिए. </ ली> ";
मुझे लगता है कि इस नाम का क्षेत्र केवल (केस) असंवेदनशील अक्षरांकीय मूल्यों शामिल है और लंबाई में कम से कम 5 से 15 अक्षर किए जाने की आवश्यकता की जाँच कर रहा हूँ preg_match में. यदि आपको लगता है कि विनिर्देशन उपयुक्त पाठ को पूरा नहीं करते $ करने के लिए त्रुटि जोड़ा है.
"[चर] का उपयोग [] डॉट [बराबर] [पाठ]" इस फैशन में मुझे कि मैं जोड़ने के लिए कर रहा हूँ एक चल रहे चर रखने के लिए अनुमति देता है. मैं तो त्रुटि अगर $ देखने के लिए जाँच कर सकते हैं मेरी स्क्रिप्ट से पहले किसी भी डेटा शामिल है कोई महत्वपूर्ण प्रश्न करता है. यदि आप त्रुटि $ दोहराने और उपयोगकर्ता पूछना उन correct करने से उन्हें बाहर थूक कर सकते हैं त्रुटियाँ हैं. मैं तो सीएसएस करने के लिए शैली मेरी त्रुटियों को आप कक्षा के साथ = \ "त्रुटियाँ जो देख सकते हैं \" का प्रयोग करें.
नियमित अभिव्यक्ति defiantly उन पर एक सीखने की अवस्था है लेकिन वे एक बेहतरीन औजार की है कि परिस्थितियों की एक किस्म में अपने जीवन को आसान बनाने में मदद कर सकते हैं. मैं और अधिक विस्तार में उनके बारे में सड़क पर नीचे जाऊँगा के लिए अब तुम एक पुस्तक खरीदने के लिए या कुछ Googling करना चाहते हो सकता है.
इस गैर तकनीकी पुनर्कथन
-एक कॅप्चा स्क्रिप्ट लागू.
(और अन्य बुरा अक्षर) slashes भागने.
यदि आपके डेटा बनाने के लिए सही पद्धति का उपयोग करके आ रहा है देखने के लिए जाँच करें.
-अगर इस अनुरोध को अपने खुद के सर्वर से प्रारंभिक है देखने के लिए जाँच करें.
-डेटा एक नियमित अभिव्यक्ति का उपयोग करके देखें.
यह मैं स्पैम के बारे में तुम क्या बता सकते हैं के लिए हिमशैल के सिर्फ टिप है. Thats क्यों मैं इसका एक छोटा श्रृंखला बनाने का फैसला कर लिया है. मैं स्पैम के साथ मैं सौदा अधिक विस्तृत तरीके तुम लाने होंगे अगले कुछ सप्ताहों में. टिप्पणी के नीचे या अपने खुद के स्पैम के बारे में मुझे ईमेल preventative तरीकों. अगर यह मैं एक भविष्य के ब्लॉग में एक लिंक वापस अपने ब्लॉग के लिए के साथ यह पोस्ट करेंगे एक नई या अनोखी तकनीक है. बस नीचे दिए गए टिप्पणियों में लिखने और वेबसाइट के क्षेत्र में अपना यूआरएल शामिल हैं.





































यह सिर्फ मेरे साथ हुआ ... उन लोगों की स्थापना अगर एक () बयान मरने के साथ बयान एक त्वरित और गंदा प्रक्रिया के लिए आसान हो सकता है. जो मुझे यकीन है कि तुम में से सबसे रहा हूँ कम से कम अभी के लिए बस टॉस करने के लिए एक quickfix चाहेगा अंदर यह है कि मन में ... कुछ तरह रखें:
($ अगर _SERVER [ 'REQUEST_METHOD']! == 'पोस्ट') (( "के फार्म का इस तरह से" ") प्रयोग नहीं किया जा सकता मर;)
तुम रख सकते हैं कि एक स्क्रिप्ट की शुरुआत में कहीं भी के लिए यह मौजूदा कोड के बारे में बहुत ज्यादा चिंता के बिना प्रभाव लेने के लिए.