PHP ఫార్మ్ పరిశీలన
- ముంది పేజీ PHP ఫారమ్ ప్రాసెసింగ్
- తరువాత పేజీ PHP ఫారమ్ ప్రతిబంధకం
ఈ భాగం మరియు తదుపరి భాగం పిఎచ్పి దిగువ ఫార్మ్ డాటాలను పరిశీలించడానికి చెప్పుతుంది.
PHP ఫార్మ్ పరిశీలన
అడ్వైజరీ:PHP ఫార్మ్స్ ను నిర్వహించడంలో సురక్షితతను ప్రత్యేకంగా గమనించండి!
ఈ పేజీలు PHP ఫార్మ్స్ ను సురక్షితంగా నిర్వహించడానికి ఎలా చూపిస్తాయి. HTML ఫార్మ్ డేటాను సరిగ్గా పరిశీలించడం PHP ఫార్మ్స్ ను హాకర్స్ మరియు స్పామ్ మెయిల్స్ ను నివారించడానికి ముఖ్యం!
మామూలు హ్ట్మ్ఎల్ ఫార్మ్స్ లో నాకు తర్వాత ఉపయోగించబడుతున్న హ్ట్మ్ఎల్ ఫార్మ్స్ లో పలు ఇన్పుట్ ఫీల్డ్స్ ఉన్నాయి: అవసరమైన మరియు ఎంపికలేని టెక్స్ట్ ఫీల్డ్స్, రేడియో బటన్స్ మరియు సమర్పించు బటన్.
పైన ఫార్మ్ యొక్క పరిశీలన పత్రం ఈ విధంగా ఉంది:
ఫీల్డ్ | పరిశీలన పత్రం |
---|---|
Name | అవసరమైనది. అక్షరాలు మరియు అంతరాలు ఉండాలి. |
అవసరమైనది. చెల్లుబాటుదారి చేసే ఇ-మెయిల్ అడ్రెస్స్ ఉండాలి (మరియు @ మరియు . ఉంటాయి). | |
Website | ఎంపికలేని. ఎందుకంటే ఎందుకు అనుకొనుటకు, చెల్లుబాటుదారి చేసే URL ఉండాలి. |
Comment | ఎంపికలేని. బహుళ రాకాల ఇన్పుట్ ఫీల్డ్ (టెక్స్ట్ బాక్స్). |
Gender | అవసరమైనది. ఒక ఎంపికను చేయడం అవసరం. |
మేము ఈ ఫార్మ్ యొక్క ప్రస్తుత హ్ట్మ్ఎల్ కోడ్ చూడండి మొదలు పెట్టాలి:
టెక్స్ట్ ఫీల్డ్
name, email మరియు website టెక్స్ట్ ఇన్పుట్ ఎలమెంట్స్ ఉన్నాయి, comment ఫీల్డ్ టెక్స్ట్ బాక్స్ ఉంది. HTML కోడ్ ఈ విధంగా ఉంటుంది:
నామ్: <input type="text" name="name"> ఇ-మెయిల్: <input type="text" name="email"> వెబ్సైట్: <input type="text" name="website"> కామెంట్: <textarea name="comment" rows="5" cols="40"></textarea>
రేడియో బటన్
gender ఫీల్డ్ రేడియో బటన్ ఉంది, HTML కోడ్ ఈ విధంగా ఉంటుంది:
Gender: <input type="radio" name="gender" value="female">Female <input type="radio" name="gender" value="male">Male
ఫార్మ్ ఎలమెంట్స్
ఫార్మ్ యొక్క HTML కోడ్ ఈ విధంగా ఉంటుంది:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>
ఈ ఫార్మ్ ను సమర్పించినప్పుడు, method="post" ద్వారా ఫార్మ్ డేటాను పంపుతారు.
ఏమి అని $_SERVER["PHP_SELF"] వేరియబుల్?
$_SERVER["PHP_SELF"] అనేది ఒక సూపర్ గ్లోబల్ వేరియబుల్, ఇది ప్రస్తుతం నిర్వహించబడుతున్న స్క్రిప్ట్ ఫైల్ పేరును వెల్లడి చేస్తుంది.
అందువల్ల, $_SERVER["PHP_SELF"] ఫార్మ్ డేటాను పేజీకి పంపుతుంది, మరియు మరొక పేజీకి తిరిగి లంకె చేయదు. ఈ విధంగా, వినియోగదారుడు ఫార్మ్ పేజీలో తప్పు సందేశాన్ని పొందవచ్చు.
htmlspecialchars() ఫంక్షన్ ఏమిటి?
htmlspecialchars() ఫంక్షన్ ప్రత్యేక అక్షరాలను HTML ఎంటిటీలుగా మారుస్తుంది. ఇది హెచ్చి, > వంటి HTML అక్షరాలను < మరియు > లుగా మారుస్తుంది. ఇది ఆక్రమణకారులు ఫారమ్లో HTML లేదా JavaScript కోడును ఇంజెక్షన్ చేయడం ద్వారా కోడును ఉపయోగించుకునేందుకు ప్రతిబంధిస్తుంది (క్రాస్-సైట్ స్క్రిప్టింగ్ ఆక్రమణ).
PHP ఫారమ్ సెక్యూరిటీ గురించిన ముఖ్యమైన అడ్వైజరీ
$_SERVER["PHP_SELF"] వేరియబుల్ హ్యాకర్స్ ద్వారా ఉపయోగించబడవచ్చు!
మీ పేజీ ఫిల్లర్ ఉపయోగిస్తే, ఉపయోగదారుడు క్రాస్-సైట్ స్క్రిప్టింగ్ (XSS) ని పని చేయగలరు.
అడ్వైజరీ:క్రాస్-సైట్ స్క్రిప్టింగ్ (Cross-site scripting, XSS) ఒక కమ్ప్యూటర్ సెక్యూరిటీ లోపం రకం, ఇంటర్నెట్ అనువర్తనాలలో సాధారణం. XSS ఆక్రమణకారులు ఇతర ఉపయోగదారుల చూసే వెబ్ పేజీలలో క్లయింట్ స్క్రిప్ట్ను ప్రవేశపెట్టగలరు.
ఇప్పుడు, మానికి "test_form.php" అనే పేరుతో ఉన్న ఒక పేజీలో ఈ విధమైన ఫారమ్ ఉంది:
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
ఇప్పుడు, ఉపయోగదారుడు అడ్రెస్ బార్లో సరిగ్గా ఉన్న URL నమోదు చేస్తే: "http://www.example.com/test_form.php" పైని కోడు ఈ విధంగా మారుతుంది:
<form method="post" action="test_form.php">
ఇప్పటివరకు ప్రతిస్పందన సరిగ్గా ఉంది.
అయితే, ఉపయోగదారుడు అడ్రెస్ బార్లో ఈ విధమైన URL నమోదు చేస్తే:
http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
ఈ పరిస్థితిలో, పైని కోడు ఈ విధంగా మారుతుంది:
<form method="post" action="test_form.php"/><script>alert('hacked')</script>
ఈ కోడు ఒక స్క్రిప్ట్ మరియు ఒక సూచన ఆదేశాన్ని జోడించింది. మరియు ఈ పేజీ లోడ్ అయినప్పుడు, జావాస్క్రిప్ట్ కోడు పని చేస్తుంది (వినియోగదారుడు ఒక సూచన ప్రదర్శించబడుతుంది). ఇది PHP_SELF వేరియబుల్ ఎలా ఉపయోగించబడుతుంది అనే సాధారణ నాశనాత్మకమైన ఉదాహరణ మాత్రమే.
మీరు గ్రహించాలి పిచేపిల్లు టాగ్ లో ప్రతి జావాస్క్రిప్ట్ కోడ్ జోడించవచ్చు!హ్యాకర్స్ వినియోగదారులను మరొక సర్వర్ పైన ఫైల్కు మళ్ళించవచ్చు, అక్కడ ఉన్న మోసగా కోడ్ సార్వత్రిక వ్యవస్థాపకాలను మార్చవచ్చు లేదా ఫారమ్ ను ఇతర చిరునామాలకు సమర్పించవచ్చు మరియు వినియోగదారి సమాచారాన్ని సేవ్ చేయవచ్చు మొదలైనవి చేయవచ్చు.
ఎలా $_SERVER["PHP_SELF"] యొక్క ఉపయోగాన్ని నివారించాలి?
htmlspecialchars() ఫంక్షన్ ద్వారా ఉపయోగించడం ద్వారా $_SERVER["PHP_SELF"] యొక్క ఉపయోగాన్ని నివారించవచ్చు.
ఫారమ్ కోడ్ ఈ విధంగా ఉంటుంది:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars() ఫంక్షన్ ప్రత్యేక అక్షరాలను HTML ఎంటిటీలుగా మారుస్తుంది. ఇప్పుడు, వినియోగదారి ప్రయత్నించినప్పుడు PHP_SELF వ్యవస్థాపకాన్ని ఉపయోగించడానికి ఇలా ఉంటుంది:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
ఉపయోగించబడదు, ప్రమాదం లేదు!
PHP ద్వారా ఫారమ్ డాటా నిర్వచించండి
మార్గాన్ని పాటించే మొదటి పని ఫంక్షన్ PHP యొక్క htmlspecialchars() ద్వారా అన్ని వ్యవస్థాపకాలను పాస్ చేయడం ఉంటుంది.
htmlspecialchars() ఫంక్షన్ మాత్రమే ఉపయోగించినప్పుడు, వినియోగదారి ప్రయత్నించినప్పుడు టెక్స్ట్ ఫీల్డ్ లో ఈ కంటెంట్ ను సమర్పించినప్పుడు:
<script>location.href('http://www.hacked.com')</script>
- కోడ్ అస్సెస్ లేదు, ఎందుకంటే ఇది పరిమితికి పెట్టబడింది, ఇలా ఉంటుంది:
<script>location.href('http://www.hacked.com')</script>
ఇప్పుడు ఈ కోడ్ పేజీలో ప్రదర్శించబడుతుంది లేదా e-mail లో సురక్షితంగా ఉంటుంది.
వినియోగదారి ఈ ఫారమ్ ను సమర్పించినప్పుడు, మేము రెండు పనులను చేయాలి:
- (PHP trim() ఫంక్షన్ ద్వారా) వినియోగదారి ప్రవేశంలోని అవసరమల్లో లేని అక్షరాలను (అదనపు ఖాళీ అక్షరాలు, టేబులేట్లు, నూతన పాన్లు) తొలగించండి
- (PHP stripslashes() ఫంక్షన్ ద్వారా) వినియోగదారి ప్రవేశంలోని అంతరాంతరాలను (\) తొలగించండి
తరువాత మేము తనిఖీ ఫంక్షన్ ని సృష్టించాము (పోస్ట్ పోస్ట్ కోడ్ రాయడానికి బదులుగా ఇది మంచి పనిని చేస్తుంది).
మేము ఫంక్షన్ ను test_input() అని పేరు పెట్టాము.
ఇప్పుడు, మేము test_input() ఫంక్షన్ ద్వారా ప్రతి $_POST వ్యవస్థాపకాన్ని తనిఖీ చేయగలిగాము ఈ విధంగా స్క్రిప్ట్ ఉంది:
ఉదాహరణ
<?php // వ్యవస్థాపకాలను నిర్వచించండి మరియు ఖాళీ విలువను అందించండి $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?>
చూడండి, స్క్రిప్ట్ ప్రాంతంలో మేము ఫారమ్ అనేకమని $_SERVER["REQUEST_METHOD"] ద్వారా సమర్పించబడినారా తనిఖీ చేశాము. అయితే REQUEST_METHOD POST అయితే, ఫారమ్ సమర్పించబడింది - దానిని తనిఖీ చేయాలి. సమర్పించబడలేదు అయితే, తనిఖీ ను పాటించకుండా ఖాళీ ఫారమ్ చూపిస్తాము.
కానీ, పైన ఉన్న ఉదాహరణలో, అన్ని ఇన్పుట్స్ ఎంపికాత్మకంగా ఉన్నాయి. ఉపయోగదారు ఏ డేటానూ ఇన్పుట్స్ చేయకపోయినప్పటికీ, స్క్రిప్ట్ సరళంగా పని చేస్తుంది.
తదుపరి చర్య ప్రతిబంధక ఇన్పుట్స్ తయారు చేయడము మరియు అవసరమైనప్పుడు వాడిన దోష సందేశాలను సృష్టించడము.
- ముంది పేజీ PHP ఫారమ్ ప్రాసెసింగ్
- తరువాత పేజీ PHP ఫారమ్ ప్రతిబంధకం