పిహెచ్పి ఫిల్టర్స్ (Filter)

PHP ఫిల్టర్లు అసురక్షిత మూలాల నుండి వచ్చే డేటా, ఉదాహరణకు వినియోగదారు ఇన్‌పుట్స్, ని పరిశీలించడానికి మరియు ఫిల్టర్ చేయడానికి ఉపయోగిస్తాయి.

PHP ఫిల్టర్లు ఏమిటి?

PHP ఫిల్టర్లు అసురక్షిత మూలాల నుండి వచ్చే డేటాను పరిశీలించడానికి మరియు ఫిల్టర్ చేయడానికి ఉపయోగిస్తాయి.

వినియోగదారు ఇన్‌పుట్స్ లేదా పరిశీలనాత్మక డేటాను పరిశీలించడం లేదా ఫిల్టర్ చేయడం ఏ వెబ్ అప్లికేషన్లుకు ముఖ్యమైన భాగం.

PHP ఫిల్టర్ ఎక్స్టెన్షన్లను రూపొందించిన ఉద్దేశ్యం డేటా ఫిల్టరింగ్ మరింత సులభంగా మరియు వేగంగా చేయడం.

ఎందుకు ఫిల్టర్లను ఉపయోగించాలి?

అన్ని వెబ్ అప్లికేషన్లు బాహ్య ఇన్‌పుట్స్ పై ఆధారపడి ఉన్నాయి. ఈ డేటా సాధారణంగా వినియోగదారులు లేదా ఇతర అప్లికేషన్లు (వెబ్ సర్వీసులు వంటి) నుండి వస్తుంది. ఫిల్టర్లను ఉపయోగించడం ద్వారా, మీరు అప్లికేషన్లు సరైన ఇన్‌పుట్ రకాన్ని పొందేందుకు నిర్ధారించవచ్చు.

您应该始终对外部数据进行过滤!

输入过滤是最重要的应用程序安全课题之一。

什么是外部数据?

  • 来自表单的输入数据
  • Cookies
  • 服务器变量
  • డేటాబేస్ క్వరీ ఫలితాలు

ఫంక్షన్స్ మరియు ఫిల్టర్స్

ప్రవేశదారాన్ని ఫిల్టర్ చేయడానికి ముఖ్యమైన ఫంక్షన్స్ ఒకటి నుండి ఒకటి వరకు ఉపయోగించండి:

  • filter_var() - ఒక ప్రత్యేక ఫిల్టర్ ద్వారా ఒక ప్రవేశదారాన్ని ఫిల్టర్ చేస్తారు
  • filter_var_array() - బహుళ ప్రవేశదారాలను అదే లేదా వివిధ ఫిల్టర్స్ ద్వారా ఫిల్టర్ చేస్తారు
  • ఒక ప్రవేశదారాన్ని పొంది, దానిని ఫిల్టర్ చేస్తారు filter_input -
  • బహుళ ప్రవేశదారాలను పొంది, వాటిని అదే లేదా వివిధ ఫిల్టర్స్ ద్వారా ఫిల్టర్ చేస్తారు filter_input_array -

ఈ ఉదాహరణలో, మేము filter_var() ఫంక్షన్ ద్వారా ఒక సంఖ్యను పరిశీలించాము:

<?php
$int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT))
 {
 echo("సంఖ్య విలువ చెల్లనిది");
 }
else
 {
 echo("సంఖ్య విలువ చెల్లనిది");
 }
?>

పైని కోడ్ లో "FILTER_VALIDATE_INT" ఫిల్టర్ను వాడినప్పుడు, ఈ సంఖ్య చెల్లనిది అని చెప్పడం జరిగింది, అందువల్ల కోడ్ యొక్క అవుట్పుట్ ఇంటర్నల్ అయింది: "సంఖ్య విలువ చెల్లనిది".

మనం ఒక కాల్పనిక సంఖ్యను వాడినప్పుడు అవుట్పుట్ ఇంటర్నల్ అయింది: "సంఖ్య విలువ చెల్లనిది".

పూర్తి ఫంక్షన్స్ మరియు ఫిల్టర్స్ జాబితా కొరకు మా వెబ్సైట్ నిర్వహించండి: PHP Filter పరిచయం పుస్తకం.

పరిశీలన మరియు శుభ్రపరిచే ఫిల్టర్స్

రెండు ఫిల్టర్స్ ఉన్నాయి:

పరిశీలన ఫిల్టర్స్:

  • వినియోగదారు ప్రవేశదారాన్ని పరిశీలించడానికి ఉపయోగిస్తారు
  • కట్టుబాటు ఫార్మాట్ నియమాలు (ఉదాహరణకు URL లేదా E-Mail పరిశీలన)
  • విజయవంతం అయితే ప్రత్యాక్ష రకాన్ని తిరిగి ఇవ్వగానే ఉంటుంది, విఫలమయితే FALSE తిరిగి ఇవ్వగానే ఉంటుంది

శుభ్రపరిచే ఫిల్టర్స్:

  • స్ట్రింగ్లో ప్రత్యేక అక్షరాలను అనుమతించుట లేదా నిషేధించుట కొరకు ఉపయోగిస్తారు
  • డేటా ఫార్మాట్ నియమాలు లేవు
  • ఎల్లప్పుడూ స్ట్రింగ్ని తిరిగి ఇవ్వగానే ఉంటుంది

ఆప్షన్స్ మరియు సంకేతాలు

ఆప్షన్స్ మరియు సంకేతాలు ప్రత్యేక ఫిల్టర్నుకు అదనపు ఫిల్టర్ ఆప్షన్స్ జోడించడానికి ఉపయోగిస్తాయి.

వివిధ ఫిల్టర్స్ వివిధ ఆప్షన్స్ మరియు సంకేతాలు కలిగి ఉంటాయి.

ఈ ఉదాహరణలో, మేము filter_var() మరియు "min_range" మరియు "max_range" ఆప్షన్స్ ద్వారా ఒక సంఖ్యను పరిశీలించాము:

<?php
$var=300;
$int_options = array(
"options"=>array
 (
 "min_range"=>0,
 "max_range"=>256
 )
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
 {
 echo("సంఖ్య విలువ చెల్లనిది");
 }
else
 {
 echo("సంఖ్య విలువ చెల్లనిది");
 }
?>

పైని కోడ్ మాదిరిగా, ఆప్షన్స్ ను "options" అనే సంబంధిత అర్రే లో పెట్టాలి. సిగ్నల్స్ ఉపయోగించినట్లయితే, అర్రే లో పెట్టకూడదు.

సంఖ్యలు "300" అని ఉన్నప్పుడు, ప్రమాణికపరచిన ప్రకారం ఈ కోడ్ యొక్క అవుట్పుట్ "Integer is not valid" ఉంటుంది.

పూర్తి ఫంక్షన్స్ మరియు ఫిల్టర్స్ జాబితా కోసం, కోడ్వే కం ప్రదానం చేసిన వెబ్సైట్ ని సందర్శించండి PHP Filter పరిచయం పుస్తకంమీరు ప్రతి ఫిల్టర్ యొక్క అందుబాటులో ఉన్న ఆప్షన్స్ మరియు సిగ్నల్స్ ను చూడవచ్చు.

ప్రవేశమును ప్రమాణికపరచండి

ఫారమ్ నుండి ప్రవేశమును ప్రమాణికపరచడానికి ప్రయత్నించండి

మేము చేయాల్సిన మొదటి విషయం, మేము కనుగొనేందుకు ఉన్న ప్రవేశ డాటా ఉన్నాయి లేదా లేదా తనిఖీ చేయాలి

అప్పుడు, మేము filter_input() ఫంక్షన్ ద్వారా ప్రవేశ డాటాను ఫిల్టర్ చేస్తాము

ఈ ఉదాహరణలో, "email" ప్రవేశము PHP పేజీకి పంపబడింది:

<?php
if(!filter_has_var(INPUT_GET, "email"))
 {
 echo("Input type does not exist");
 }
else
 {
 if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
  {
  echo "E-Mail is not valid";
  }
 else
  {
  echo "E-Mail is valid";
  }
 }
?>

ఉదాహరణ వివరణం:

పైని ఉదాహరణలో, "GET" పద్ధతి ద్వారా పంపబడిన ప్రవేశము (email) ఉంది:

  1. ప్రవేశములు "GET" రకము "email" ఉన్నాయి లేదో పరిశీలించండి
  2. ప్రవేశములు ఉన్నట్లయితే, వాటిని ప్రమాణిక ఇమెయిల్ చేయండి

ప్రవేశమును శుభ్రపరచండి

ఫారమ్ నుండి పంపబడిన URL ను శుభ్రపరచడానికి ప్రయత్నించండి

మొదటగా, మాకు కనుగొనేందుకు ఉన్న ప్రవేశ డాటా ఉన్నాయి లేదా లేదా తనిఖీ చేయాలి

అప్పుడు, మేము filter_input() ఫంక్షన్ ద్వారా ప్రవేశ డాటాను శుభ్రపరచండి

ఈ ఉదాహరణలో, "url" ప్రవేశము PHP పేజీకి పంపబడింది:

<?php
if(!filter_has_var(INPUT_POST, "url"))
 {
 echo("Input type does not exist");
 }
else
 {
 $url = filter_input(INPUT_POST, "url", FILTER_SANITIZE_URL);
 }
?>

ఉదాహరణ వివరణం:

పైని ఉదాహరణలో, "POST" పద్ధతి ద్వారా పంపబడిన ప్రవేశము (url) ఉంది:

  1. "POST" రకము "url" ప్రవేశములు ఉన్నాయి లేదో పరిశీలించండి
  2. ఈ ప్రవేశములు ఉన్నట్లయితే, వాటిని శుభ్రపరచి (అనియంత్రిత అక్షరాలను తొలగించండి) మరియు $url వేరియబుల్ లో నిల్వ చేయండి

ఇది వంటి ప్రవేశములు ఉన్నట్లయితే: "http://www.W3非o法ol.com.c字符n/" అనేది, శుభ్రపరచిన $url వేరియబుల్ ఇలా ఉంటుంది:

http://www.codew3c.com/

అనేక ఇన్‌పుట్లను ఫిల్టర్ చేయడం

ఫారమ్లు సాధారణంగా అనేక ఇన్‌పుట్ ఫీల్డులను కలిగి ఉంటాయి. filter_var లేదా filter_input నిరంతరం ఆక్రమణ చేయడానికి నివారించడానికి, filter_var_array లేదా filter_input_array ఫంక్షన్ను ఉపయోగించవచ్చు:

ఈ ఉదాహరణలో, మేము filter_input_array() ఫంక్షన్ యొక్క మూడు GET మార్పుదలలను ఫిల్టర్ చేస్తున్నాము. అందుకు గెట్ మార్పుదలలు ఒక పేరు, ఒక వయస్సు మరియు ఒక ఇమెయిల్ చిరునామా ఉన్నాయి:

<?php
$filters = array
 (
 "name" => array
  (
  "filter"=>FILTER_SANITIZE_STRING
  ),
 "age" => array
  (
  "filter"=>FILTER_VALIDATE_INT,
  "options"=>array
   (
   "min_range"=>1,
   "max_range"=>120
   )
  ),
 "email"=> FILTER_VALIDATE_EMAIL,
 );
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"])
 {
 echo("Age must be a number between 1 and 120.<br />");
 }
elseif(!$result["email"])
 {
 echo("E-Mail is not valid.<br />");
 }
else
 {
 echo("User input is valid");
 }
?>

ఉదాహరణ వివరణం:

పైన ఉన్న ఉదాహరణలో, "GET" పద్ధతి ద్వారా పంపబడిన మూడు ఇన్‌పుట్ మార్పుదలలు ఉన్నాయి (name, age మరియు email):

  1. ఇన్‌పుట్ మార్పుదలల పేర్లను మరియు పేర్కొన్న ఇన్‌పుట్ మార్పుదలలకు ఫిల్టర్లను కలిగివున్న అర్రే సెట్ చేయండి:
  2. filter_input_array() ఫంక్షన్ యొక్క పారామీటర్లు గెట్ ఇన్‌పుట్ మరియు కొద్దికాలం ముందు సెట్ చేసిన అర్రే లేది కావచ్చు:
  3. result మార్పుదలలో "age" మరియు "email" మార్పుదలలను అక్రమ ఇన్‌పుట్ ఉన్నాయి అని పరిశీలించండి. (అక్రమ ఇన్‌పుట్ ఉన్నాయి అయితే,)

filter_input_array() ఫంక్షన్ యొక్క రెండవ పారామీటర్ అర్రే లేదా ఏకరూపం ఫిల్టర్ ఐడి అయితే ఉండవచ్చు:

ఈ పారామీటర్ ఒక ఏకరూపం ఫిల్టర్ ఐడి అయితే, ఈ పేర్కొన్న ఫిల్టర్ అన్ని ఇన్‌పుట్ అర్రే విలువలను ఫిల్టర్ చేస్తుంది.

ఈ పారామీటర్ ఒక అర్రే అయితే, ఈ అర్రే ముందుకు పేర్కొన్న నియమాలను అనుసరించాలి:

  • 必须是一个关联数组,其中包含的输入变量是数组的键(比如 "age" 输入变量)
  • ఈ అర్రు యొక్క విలువలు ఫిల్టర్ ఐడి ఉండాలి లేదా ఫిల్టర్, సంకేతాలు మరియు ఆప్షన్స్ నిర్దేశించిన అర్రు ఉండాలి

Filter Callback ఉపయోగం

FILTER_CALLBACK ఫిల్టర్ ఉపయోగించడం ద్వారా, మీరు స్వంతమైన ఫంక్షన్స్ ను ఫిల్టర్ గా ఉపయోగించవచ్చు. అలా మేము డేటా ఫిల్టరింగ్ పూర్తి నియంత్రణ కలిగి ఉంటాము.

మీరు స్వంతమైన సంకేతపత్రం ఫంక్షన్స్ సృష్టించవచ్చు లేదా ఉన్నతమైన PHP ఫంక్షన్స్ ఉపయోగించవచ్చు.

ఫిల్టర్ ఫంక్షన్స్ మరియు ఆప్షన్స్ నిర్దేశించడానికి మీరు చేయవలసిన విధానం ఒకే విధంగా ఉంటుంది.

ఈ ఉదాహరణలో, మేము అన్ని "_" అన్నిటినీ శూన్య అంతరానికి మార్చే ఒక స్వంతమైన ఫంక్షన్ని ఉపయోగించాము:

<?php
function convertSpace($string)
{
return str_replace("_", " ", $string);
}
$string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace"));
?>

పైని కోడ్ ఫలితం ఈ విధంగా ఉంటుంది:

పీటర్ ఒక గొప్ప వ్యక్తి ఉంది!

ఉదాహరణ వివరణం:

పైని ఉదాహరణలో, అన్ని "_" అన్నిటినీ శూన్య అంతరానికి మార్చబడ్డాయి:

  1. బదులుగా "_" అన్నిటినీ శూన్య అంతరానికి మార్చే ఫంక్షన్ని సృష్టించండి
  2. filter_var() ఫంక్షన్ని కాల్ చేయండి, దాని పారామీటర్స్ FILTER_CALLBACK ఫిల్టర్ మరియు మా ఫంక్షన్స్ కలిగిన అర్రే యొక్క కలిగిన అర్రు