ȸ¿ø·Î±×ÀÎ
14³â Àü
PHP Filter´Â »ç¿ëÀÚ ÀԷ°ú °°Àº ¾ÈÀüÇÏÁö ¾ÊÀº ¼Ò½ºµé·ÎºÎÅÍ ¿À´Â µ¥ÀÌÅ͸¦ ÇÊÅ͸µÇÏ°í À¯È¿ÇÑÁö È®ÀÎÇϴµ¥ »ç¿ëµË´Ï´Ù.
--------------------------------------------------------------------------------
PHP Filter´Â ¹«¾ùÀΰ¡?
PHP filter´Â ¾ÈÀüÇÏÁö ¾ÊÀº ¼Ò½ºµé·ÎºÎÅÍ ¿À´Â µ¥ÀÌÅ͸¦ ÇÊÅ͸µÇÏ°í À¯È¿¼ºÀ» È®ÀÎÇϴµ¥ »ç¿ëµË´Ï´Ù.
»ç¿ëÀÚÀÇ ÀԷ ȤÀº ÀÓÀÇÀÇ µ¥ÀÌÅ͸¦ Å×½ºÆ®ÇÏ°í, À¯È¿¼ºÀ» È®ÀÎÇÏ°í, ÇÊÅ͸µÇϴ°ÍÀº ¾î¶² À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡¼¶óµµ Áß¿äÇÑ ºÎºÐÀÔ´Ï´Ù.
PHP filter È®ÀåÀº µ¥ÀÌÅÍ ÇÊÅ͸µÀ» ´õ ½±°í, ´õ ºü¸£°Ô ÇϱâÀ§Çؼ µðÀÚÀεǾú½À´Ï´Ù.
--------------------------------------------------------------------------------
¿Ö Filter¸¦ »ç¿ëÇϴ°¡?
°ÅÀÇ ¸ðµç À¥ ¾ÖÇø®ÄÉÀ̼ǵéÀÌ ¿ÜºÎ ÀԷ¿¡ ÀÇÁ¸ÇÕ´Ï´Ù. ´ëü·Î ¿ÜºÎ ÀÔ·ÂÀº »ç¿ëÀÚ È¤Àº ´Ù¸¥ À¥ ¾ÖÇø®ÄÉÀ̼Ç(À¥¼ºñ½º °°Àº°Í)À¸·ÎºÎÅÍ ¿É´Ï´Ù. filter¸¦ »ç¿ëÇÔÀ¸·Î¼ À¥¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¦´ë·Î °ªÀ» ÀԷ¹޾ҴÂÁö È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
À¥¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µå½Ç¶§, Ç×»ó ¸ðµç ¿ÜºÎ µ¥ÀÌÅÍ¿¡ ´ëÇØ filter¸¦ »ç¿ëÇϼ¼¿ä!
ÀԷ°ªÀÇ ÇÊÅ͸µÀº °¡Àå Áß¿äÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç º¸¾È À̽´Áß ÇϳªÀÔ´Ï´Ù.
¿ÜºÎ µ¥ÀÌÅÍ´Â ¾Æ·¡Àǰ͵éÀÌ ÇØ´çµË´Ï´Ù:
•ÆûÀ¸·ÎºÎÅÍ ÀÔ·ÂµÈ µ¥ÀÌÅÍ
•ÄíÅ°
•À¥¼ºñ½º µ¥ÀÌÅÍ
•¼¹ö º¯¼ö
•µ¥ÀÌÅͺ£À̽º Äõ¸® °á°ú
--------------------------------------------------------------------------------
Filter ÇÔ¼ö
º¯¼ö¸¦ ÇÊÅ͸µÇÏ·Á¸é, ¾Æ·¡ filterÇÔ¼öÁß Çϳª¸¦ »ç¿ëÇϼ¼¿ä:
•filter_var() - ÁöÁ¤µÈ ÇÊÅÍ·Î ÇϳªÀÇ º¯¼ö¸¦ ÇÊÅ͸µÇÕ´Ï´Ù.
•filter_var_array() - ¸î °³ÀÇ º¯¼öµéÀ» °°Àº, ȤÀº ´Ù¸¥ ÇÊÅ͵é·Î ÇÊÅ͸µÇÕ´Ï´Ù.
•filter_input - ÇϳªÀÇ ÀԷ°ªÀ» ¹ÞÀº´ÙÀ½, ±×°É ÇÊÅ͸µÇÕ´Ï´Ù.
•filter_input_array - ¸î °³ÀÇ ÀԷ°ªµéÀ» ¹ÞÀº´ÙÀ½ ±×°ÍµéÀ» °°Àº, ȤÀº ´Ù¸¥ ÇÊÅ͵é·Î ÇÊÅ͸µÇÕ´Ï´Ù.
¾Æ·¡ÀÇ ¿¹Á¦¿¡¼, filter_var() ÇÔ¼ö¸¦ »ç¿ëÇؼ Á¤¼öÀÇ À¯È¿¼ºÀ» È®ÀÎÇÕ´Ï´Ù.
<?php
$int = 123;if(!filter_var($int, FILTER_VALIDATE_INT))
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>
À§ÀÇ Äڵ忡¼´Â "FILTER_VALIDATE_INT" ÇÊÅ͸¦ »ç¿ëÇؼ º¯¼ö¸¦ ÇÊÅ͸µÇÏ°í ÀÖ½À´Ï´Ù. Á¤¼ö°¡ À¯È¿Çϱ⠶§¹®¿¡, À§ ÄÚµåÀÇ Ãâ·Â °á°ú´Â "Interger is valid"°¡ µË´Ï´Ù.
º¯¼ö¿¡ Á¤¼ö°¡ ¾Æ´Ñ°ªÀÌ ´ëÀ﵃ °æ¿ì (¿¹: 123abc), Ãâ·Â °á°ú´Â "Integer is not valid"°¡ µË´Ï´Ù.
--------------------------------------------------------------------------------
Validating(=À¯È¿¼º È®ÀÎ)°ú Sanitizing(=ºÒÇÊ¿äÇÑ ¹®ÀÚ¿ Á¦°Å) Filter
Å©°Ô ¾Æ·¡¿Í °°Àº µÎ Á¾·ùÀÇ filter°¡ ÀÖ½À´Ï´Ù:
Validating filter:
•»ç¿ëÀÚ ÀÔ·ÂÀÇ À¯È¿¼ºÀ» È®ÀÎÇϴµ¥ »ç¿ëµË´Ï´Ù.
•Æ¯Á¤ ÇüÅÂ/Æ÷¸ËÀ¸·Î Á¦ÇѽÃŵ´Ï´Ù. (URL ÁÖ¼Ò È¤Àº E-Mail ÁÖ¼ÒÀÇ À¯È¿¼º È®ÀÎ °°Àº°Í.)
•¹®Á¦°¡ ¹ß»ýÇßÀ»¶§ ¼º°ø ȤÀº ½ÇÆп¡ ´ëÇØ ±â´ëµÈ ŸÀÔÀÌ ¹ÝȯµÇµµ·Ï ÇÕ´Ï´Ù.
Sanitizing filter:
•¹®ÀÚ¿¿¡¼ ƯÁ¤ÇÑ ¹®ÀÚµéÀ» Çã¿ëÇϰųª °ÅºÎÇÒ¶§ »ç¿ëµË´Ï´Ù.
•µ¥ÀÌÅÍ ÇüÅÂ/Æ÷¸Ë¿¡ ´ëÇØ Á¦ÇѽÃų ¼ö ¾ø½À´Ï´Ù.
•Ç×»ó ¹®ÀÚ¿°ªÀ» ¹ÝȯÇÕ´Ï´Ù.
--------------------------------------------------------------------------------
¿É¼Ç(Option)°ú Ç÷¡±×(Flag)
¿É¼Ç°ú Ç÷¡±×µéÀº ÁöÁ¤µÈ ÇÊÅÍ¿¡ ºÎ°¡ÀûÀÎ ÇÊÅ͸µ ¿É¼ÇµéÀ» Ãß°¡Çϱâ À§Çؼ »ç¿ëµË´Ï´Ù.
¼·Î ´Ù¸¥ ÇÊÅÍ´Â ¼·Î ´Ù¸¥ ¿É¼Ç°ú Ç÷¡±×µéÀ» °¡Áö°í ÀÖ½À´Ï´Ù.
¾Æ·¡ÀÇ ¿¹Á¦¿¡¼´Â Á¤¼ö°ªÀ» 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("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>
¿¹Á¦ ÄÚµåó·³, ¿É¼ÇÀº À§ÀÇ ¹è¿°ú °°Àº "options"¶ó´Â À̸§À» °¡Áø ¹è¿¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. Ç÷¡±×°¡ »ç¿ëµÈ´Ù¸é ²À ¹è¿¿¡ ÀÖ¾î¾ßÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
Á¤¼ö°ªÀÌ "300"À¸·Î ÁöÁ¤µÈ ¹üÀ§¿¡ ÀÖÁö ¾Ê±â ¶§¹®¿¡, À§ ÄÚµåÀÇ Ãâ·Â °á°ú´Â "Integer is not valid"°¡ µË´Ï´Ù.
--------------------------------------------------------------------------------
ÀԷ°ª À¯È¿¼º È®ÀÎÇϱâ(Validate Input)
ÀÌÁ¦ ÆûÀ¸·ÎºÎÅÍ ÀÔ·ÂµÈ °ªÀÇ À¯È¿¼ºÀ» È®ÀÎÇØ º¾½Ã´Ù.
¿ì¼± ÇؾßÇÒÀÏÀº ã°íÀÖ´Â ÀÔ·Â µ¥ÀÌÅÍ°¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÏ´Â°Í ÀÔ´Ï´Ù.
±×·±´ÙÀ½ 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.ÀÔ·Â º¯¼ö°¡ Á¸ÀçÇÑ´Ù¸é, À¯È¿ÇÑ e-mail ÁÖ¼ÒÀÎÁö È®ÀÎÇÕ´Ï´Ù.
--------------------------------------------------------------------------------
ºÒÇÊ¿äÇÑ ¹®ÀÚ¿ Á¦°ÅÇϱâ(Sanitize Input)
ÆûÀ¸·ÎºÎÅÍ º¸³»Áø 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.ÀÔ·Â º¯¼ö°¡ Á¸ÀçÇÑ´Ù¸é, sanitize·Î À߸øµÈ ¹®ÀÚ¿µéÀ» Á¦°ÅÇÑ´ÙÀ½, ±×°É $url º¯¼ö¿¡ ÀúÀåÇÕ´Ï´Ù.
À߸øµÈ URL ÁÖ¼Ò°¡ ÀÔ·ÂµÇ¸é ¿Ã¹Ù¸£°Ô °íÃÄÁö°Ô µË´Ï´Ù.
--------------------------------------------------------------------------------
´ÙÁß ÀÔ·Â ÇÊÅ͸µÇϱâ
ÆûÀº °ÅÀÇ ´ëºÎºÐ 1°³ÀÇ ÀÔ·ÂÇʵå ÀÌ»óÀ¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. filter_var³ª filter_input ÇÔ¼ö¸¦ °è¼ÓÇؼ ¹Ýº¹ÀûÀ¸·Î È£ÃâÇÏÁö ¾ÊÀ¸·Á¸é, filter_var_array ȤÀº filter_input_array ÇÔ¼ö¸¦ ´ë½Å »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
À̹ø ¿¹Á¦¿¡¼´Â 3°³ÀÇ GET º¯¼ö¸¦ ÇÊÅ͸µÇϱâ À§Çؼ filter_input_array() ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀԷ¹ްԵǴ GET º¯¼ö´Â À̸§, ³ªÀÌ, ±×¸®°í e-mail ÁÖ¼ÒÀÔ´Ï´Ù:
<?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" ¹æ½ÄÀ¸·Î º¸³»Áø 3°³ÀÇ ÀÔ·Â (À̸§, ³ªÀÌ, email)ÀÌ ÀÖ½À´Ï´Ù:
1.ÀÔ·Â º¯¼öµéÀÇ À̸§°ú ÁöÁ¤µÈ ÀÔ·Â º¯¼öµé¿¡ ´ëÇØ »ç¿ëµÈ ÇÊÅ͵éÀ» Æ÷ÇÔÇÏ´Â ¹è¿À» ¼³Á¤ÇÕ´Ï´Ù.
2.GET ÀÔ·Â º¯¼öµé, ¹è¿°ú ÇÔ²² filter_intput_array() ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
3.$result º¯¼ö¿¡ ´ã°ÜÀÖ´Â "age", "email" º¯¼ö°¡ ¿Ã¹Ù¸¥ ÀÔ·ÂÀÎÁö È®ÀÎÇÕ´Ï´Ù. (ÀÔ·Â º¯¼ö°¡ ¿Ã¹Ù¸£Áö ¾Ê´Ù¸é, filter_input_array() ÇÔ¼ö ÀÌÈÄ¿¡¼ °ÅÁþÀ̵Ǽ ¾Ë¸ÂÀº ¿À·ù ¸Þ½ÃÁö°¡ Ç¥½ÃµË´Ï´Ù.)
filter_input_array() ÇÔ¼öÀÇ µÎ¹ø° ÆĶó¹ÌÅÍ´Â ¹è¿À̳ª ÇϳªÀÇ filter ID°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.
¸¸ÀÏ ÆĶó¹ÌÅÍ°¡ ´ÜÀÏ filter ID ¶ó¸é ÀÔ·Â ¹è¿ÀÇ ¸ðµç °ªÀº ÁöÁ¤µÈ ÇÊÅÍ¿¡ ÀÇÇؼ ÇÊÅ͸µµË´Ï´Ù.
¸¸ÀÏ ÆĶó¹ÌÅÍ°¡ ¹è¿À̶ó¸é ¾Æ·¡ÀÇ ±ÔÄ¢µéÀ» µû¶ó¾ß ÇÕ´Ï´Ù:
•ÀÔ·Â º¯¼öµéÀ» ÇϳªÀÇ ¹è¿Å°·Î¼ Æ÷ÇÔÇÏ°í ÀÖ´Â Associative ¹è¿À̾î¾ß¸¸ ÇÕ´Ï´Ù. ("age" ÀÔ·Â º¯¼öó·³ ¸»ÀÌÁö¿ä)
•¹è¿°ªÀº filter ID ȤÀº ÇÊÅÍ, Ç÷¡±×, ¿É¼ÇÀ» ÁöÁ¤ÇÏ°í ÀÖ´Â ¹è¿À̾î¾ß ÇÕ´Ï´Ù.
--------------------------------------------------------------------------------
Filter Callback »ç¿ëÇϱâ
»ç¿ëÀÚ Á¤ÀÇµÈ ÇÔ¼ö¸¦ È£ÃâÇÏ°í ±×°É ÇÊÅÍ·Î »ç¿ëÇϴ°ÍÀÌ FILTER_CALLBACK ÇÊÅ͸¦ »ç¿ëÇÏ¸é °¡´ÉÇÕ´Ï´Ù.
ÀÌ·¸°ÔÇϸé, µ¥ÀÌÅÍ ÄÁÆ®·Ñ¿¡ ´ëÇØ Ç®·Î ÄÁÆ®·Ñ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀڽŸ¸ÀÇ »ç¿ëÀÚ Á¤ÀÇµÈ ÇÔ¼ö¸¦ ¸¸µé°Å³ª, ȤÀº ÀÌ¹Ì Á¸ÀçÇÏ´Â PHP ÇÔ¼ö¸¦ »ç¿ëÇϴ°ÍÀÌ °¡´ÉÇÕ´Ï´Ù.
ÇÊÅÍ·Î »ç¿ëÇÏ·Á´Â ÇÔ¼ö´Â ¿É¼ÇÀÌ ÁöÁ¤µÇ´Â°Í°ú °°Àº ¹æ¹ýÀ¸·Î ÁöÁ¤µË´Ï´Ù. "options"À̶õ À̸§À» °¡Áø associative ¹è¿¾È¿¡ ¸»ÀÌÁö¿ä.
¾Æ·¡ÀÇ ¿¹Á¦¿¡¼´Â, ¸ðµç "_"À» °ø¹éÀ¸·Î º¯È¯ÇÏ´Â Ä¿½ºÅÒ ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
<?php
function convertSpace($string)
{
return str_replace("_", " ", $string);
}
$string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK,
array("options"=>"convertSpace"));
?>
À§ ÄÚµå·ÎºÎÅÍÀÇ °á°ú´Â ¾Æ·¡¿Í °°¾Æ¾ßÇÕ´Ï´Ù:
Peter is a great guy!
¿¹Á¦ ÄÚµå ¼³¸í
À§ÀÇ ¿¹Á¦´Â ¸ðµç "_"¸¦ °ø¹éÀ¸·Î ¹Ù²ß´Ï´Ù:
1."_"¸¦ °ø¹éÀ¸·Î ¹Ù²Ù±âÀ§ÇÑ ÇÔ¼ö¸¦ »ý¼ºÇÕ´Ï´Ù.
2.filter_var() ÇÔ¼ö¸¦ FILTER_CALLBACK ÇÊÅÍ, ±×¸®°í »ý¼ºµÈ ÇÔ¼ö¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¹è¿°ú ÇÔ²² È£ÃâÇÕ´Ï´Ù.
̵̧ : 429
̵̧
¸ñ·Ï