2.3. °íµµÀÇ »ç¿ë¹ý

2.3.1. ACL µ¥ÀÌÅÍÀÇ º¸Á¸¿¡ ÀÇÇÑ ¿µ¼Ó¼ºÀÇ È®º¸

Zend_Acl (Àº)´Â, ƯÁ¤ÀÇ ¿¬±¸ ÃÖÁ¾ ´Ü°è ±â¼ú ( ¿¹¸¦ µé¾î µ¥ÀÌŸº£À̽º³ª ij½¬ ¼­¹ö¸¦ »ç¿ëÇß´Ù ACL µ¥ÀÌÅÍÀÇ º¸Á¸ µî) ¿¡ ÀÇÁ¸ÇÏÁö ¾Ê°Ô ¸¸µé¾îÁ® ÀÖ½À´Ï´Ù. ¸ðµÎ PHP ¸¸À¸·Î ½ÇÀåµÇ°í ÀÖÀ¸¹Ç·Î,Zend_Acl ¿ë¹«ÀÇ °ü¸®ÅøÀ» µ¶ÀÚÀûÀ¸·Î ÀÛ¼ºÇØ °ü¸®ÀÇ ¼ö°í¸¦ »ý·«ÇÏ´Â °Íµµ °¡´ÉÇÏ°Ô µÇ¾î ÀÖ½À´Ï´Ù. ACL ÀÇ °ü¸®¸¦ ´ëÈ­ÀûÀ¸·Î ½Ç½ÃÇÏ°í ½Í´Ù°í ÇÏ´Â Àå¸éµµ ¸¹ÀÌ ¹ß»ýÇϰÚÁö¿ä.±× ¶§¹®¿¡ Zend_Acl ±×·³, ¾îÇø®ÄÉÀ̼ÇÀÇ ¾×¼¼½º Á¦¾î¸¦ ¼³Á¤Çϰųª ±×¿¡ ´ëÇØ ¹®ÀÇÇϰųª ÇÏ´Â ¸Þ¼Òµå¸¦ ÁغñÇϰí ÀÖ½À´Ï´Ù.

µ¥ÀÌÅÍÀÇ »ç¿ë¹ý¿¡´Â ´Ù¾çÇÑ °ÍÀ» »ý°¢ÇÒ ¼ö ÀÖÀ¸¹Ç·Î, ACL µ¥ÀÌÅÍÀÇ º¸Á¸Àº, Àå¸é¿¡ µû¶ó °³¹ßÀÚÃø¿¡¼­ »ý°¢ÇÏ°Ô µË´Ï´Ù. Zend_Acl (Àº)´Â ½Ã¸®¾Æ¶óÀÌÁî °¡´ÉÇØ¼­,ACL ¿ÀºêÁ§Æ®¸¦ PHP ÀÇ serialize() ÇÔ¼ö·Î ½Ã¸®¾Æ¶óÀÌÁî ÇÒ ¼ö ÀÖ½À´Ï´Ù.½Ã¸®¾Æ¶óÀÌÁî ÇÑ °á°ú¸¦, ÆÄÀÏÀ̳ª µ¥ÀÌŸº£À̽º ȤÀº ij½¬µîÀÇ ÁÁ¾ÆÇÏ´Â Àå¼Ò¿¡ º¸Á¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

2.3.2. assertion¸¦ »ç¿ëÇÑ Á¶°ÇºÎ ACL ±ÔÄ¢ÀÇ ÀÛ¼º

¾î´À ÀÚ¿ø¿¡ ´ëÇÑ Æ¯Á¤ÀÇ ·ÑÀÇ ¾×¼¼½º±ÇÇÑÀÌ, °íÁ¤Àº ¾Æ´Ï°í Á¶°Ç¿¡ µû¶ó º¯È­Çϱ⵵ ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¾×¼¼½º¸¦ ÀÎÁ¤ÇÏ´Â °ÍÀº ¿ÀÀü 8 ½Ã°£À¸·ÎºÎÅÍ ¿ÀÈÄ 5 ½Ã°£ÀÇ »çÀÌ·Î ÇÑÁ¤ÇÑ´Ù°í ÇßÀ» °æ¿ìÀÔ´Ï´Ù. ´Ù¸¥ ¿¹·Î¼­´Â, ºí·¢ ¸®½ºÆ®¿¡ ½Ç·Á Àִ ƯÁ¤ÀÇ IP ÁּҷκÎÅÍÀÇ ¾×¼¼½º¸¸À» °ÅºÎÇÑ´Ù°í Çß´ø ÀûÀÌ ÀÖ½À´Ï´Ù. Zend_Acl (Àº)´Â, ÇÊ¿äÇÏ°Ô ÀÀÇÑ ÀÓÀÇÀÇ Á¶°Ç¿¡ ÀǰÅÇÏ´Â ±ÔÄ¢À» ÆíÀÔÀ¸·Î ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.

Zend_Acl (Àº)´Â, Á¶°ÇºÎÀÇ ±ÔÄ¢À» Zend_Acl_Assert_Interface ±×¸®°í ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.±ÔÄ¢ÀÇ assertion¿ë ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ·Á¸é , À̰ÍÀ» ½ÇÀåÇÑ Å¬·¡½º¿¡¼­ assert() ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÕ´Ï´Ù.


<?php
require_once 'Zend/Acl/Assert/Interface.php';

class 
CleanIPAssertion implements Zend_Acl_Assert_Interface
{
    public function 
assert(Zend_Acl $aclZend_Acl_Role_Interface $role null,
                           
Zend_Acl_Resource_Interface $resource null$privilege null)
    {
        return 
$this->_isCleanIP($_SERVER['REMOTE_ADDR']);
    }

    protected function 
_isCleanIP($ip)
    {
        
// ...
    
}
}

assertion Ŭ·¡½º¸¦ ÀÛ¼ºÇϸé, Á¶°ÇºÎÀÇ ±ÔÄ¢À» Á¤ÀǸ¦ ÇÒ´çÇÒ ¶§¿¡ ÀÌ assertion Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ÁöÁ¤ÇÕ´Ï´Ù. assertion µ¹ÃâÇØ ÀÛ¼ºµÈ ±ÔÄ¢Àº, assertion ¸Þ¼Òµå°¡ true (À»)¸¦ µ¹·ÁÁÖ´Â °æ¿ì¿¡°Ô¸¸ Àû¿ëµË´Ï´Ù.


<?php
require_once 'Zend/Acl.php';

$acl = new Zend_Acl();
$acl->allow(nullnullnull, new CleanIPAssertion());

À§ÀÇ Äڵ尡 ÀÛ¼ºÇÏ´Â Á¶°ÇºÎ ±ÔÄ¢Àº, ´©±¸·ÎºÎÅÍÀÇ ¾×¼¼½º¿©µµ ¸ðµç ±ÇÇÑÀ» Çã°¡ÇÕ´Ï´Ù¸¸, ¸®Äù½ºÆ®¿øÀÇ IP ÁÖ¼Ò°¡ " ºí·¢ ¸®½ºÆ®¿¡ ½Ç·Á ÀÖ´Ù" °æ¿ì¿¡°Ô¸¸ ¾×¼¼½º¸¦ °ÅºÎÇÑ´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù. ¸®Äù½ºÆ®¿øÀÇ IP ÇÏÁö¸¸ " Ŭ¸°" (Àº)´Â ¾Æ´Ï¶ó°í º¸¿´À» °æ¿ì´Â, ¾×¼¼½º Çã°¡ ±ÔÄ¢ÀÌ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù.ÀÌ ±ÔÄ¢Àº ¸ðµç ·Ñ ¹× ÀÚ¿øÀÇ ¸ðµç ±ÇÇÑ¿¡ ´ëÇØ¼­ Àû¿ëµÇ¹Ç·Î," ±ú²ýÇÏÁö ¾Ê´Ù" IP (À¸)·ÎºÎÅÍÀÇ ¾×¼¼½º´Â °ÅºÎÇÏ°Ô µË´Ï´Ù. ±×·¯³ª, À̰ÍÀº Ư¼öÇÑ ÄÉÀ̽ºÀÔ´Ï´Ù.Åë»óÀº ( Áï Æ¯Á¤ÀÇ ·ÑÀ̳ª ÀÚ¿ø, ±ÇÇÑÀ» ±ÔÄ¢ÀÇ ´ë»óÀ¸·Î ÇÏ´Â °æ¿ì) , assertion¿¡ ½ÇÆÐÇÏ°í ±ÔÄ¢ÀÌ Àû¿ëµÇÁö ¾Ê¾Ò´ø °æ¿ì¿¡´Â, ´Ù¸¥ ±ÔÄ¢À» »ç¿ëÇØ ¾×¼¼½ºÀÇ °¡ºÎ¸¦ ÆÇ´Ü½ÃÄÑ¾ß ÇÕ´Ï´Ù.

assertion ¿ÀºêÁ§Æ®ÀÇ assert() ¸Þ¼Òµå´Â, ÀÎÁõ ¹®ÀÇ ( Áï isAllowed()) ÇÏÁö¸¸ Àû¿ëµÈ´Ù ACL , ·Ñ, ÀÚ¿ø ¹× ±ÇÇÑ¿¡°Ô °Ç³×Áý´Ï´Ù.À̰ÍÀ» ÀÌ¿ëÇϰí, ÇÊ¿äÇÑ Àå¼Ò¿¡¼­ assertion Ŭ·¡½º°¡ Á¶°ÇÀ» ÆÇ´ÜÇÕ´Ï´Ù.