ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î


[php] SQL ÀÎÁ§¼Ç °ø°Ý
7³â Àü
SQL ÁúÀÇ °ø°ÝÀÌ Çö½ÇÀûÀ¸·Î ¸¹Àº ¹®Á¦Á¡À» °¡Á® ¿Â´Ù´Â Á¡¿¡ ÃֽŠ¹öÀü(MYSQL, MSSQL..)¿¡¼­ ÀÚüÀûÀ¸·Î ÇÊÅ͸µÇÏ°í ÀÖÁö¸¸, ±¸¹öÀü¿¡¼­ ±×·¸Áö ¸øÇÕ´Ï´Ù.

SQL ÁúÀǸ¦ ½Å·ÚÇÒ ¼ö ¾ø´Â ¸í·ÉÀ¸·Î ÀÎÇØ SQL ÁúÀÇ¿¡¼­ Á¢±Ù Á¦¾î¸¦ ¿ìȸÇÒ ¼ö ÀÖ¿©, ÀϹÝÀûÀÎ ÀÎÁõ°ú ÀÎÁõ È®ÀÎÀ» ¹«½ÃÇÏ°í, Á¾Á¾ SQL ÁúÀÇ°¡ »ç¿ëÀÚ°¡ °¡Áú ¼ö ¾ø´Â ±ÇÇÑÀ» °­Á¦ ÃëµæÇϱ⵵ ÇÕ´Ï´Ù.

SQL ¸í·É ÀÎÁ§¼ÇÀ̶õ? °ø°ÝÀÚ°¡ ¼û°ÜÁø µ¥ÀÌÅ͸¦ ³ëÃâÇϰųª, Ãë¾àÇÑ ºÎºÐÀ» µ¤¾î¾²°Å³ª, µ¥ÀÌÅͺ£À̽º¿¡ À§ÇèÇÑ ½Ã½ºÅÛ ´Ü°è ¸í·ÉÀ» ½ÇÇàÇÏ°Ô ÇÏ´Â SQL ¸í·ÉÀ» »ý¼ºÇϰųª ´ëüÇÏ´Â ±â¼ú¸¦ ¸»ÇÕ´Ï´Ù.

¾îÇø®ÄÉÀ̼ÇÀÌ »ç¿ëÀÚ ÀÔ·ÂÀ» ¹Þ¾Æ¼­, À̸¦ SQL ÁúÀǸ¦ ¸¸µé 떄 Á¤Àû Àμö·Î Á¶ÇÕÇÔÀ¸·Î½á ÀϾ´Ï´Ù. À¯°¨½º·´°Ôµµ, ¾Æ·¡ ¿¹Á¦µéÀº ½ÇÁ¦ÀÇ °ÍÀÔ´Ï´Ù.

Æнº¿öµå¸¦ ¾ò´Â ¹æ¹ý Áß Çϳª´Â °Ë»ö °á°ú ÆäÀÌÁö¸¦ ¿ìȸÇÏ´Â °ÍÀÔ´Ï´Ù. °ø°ÝÀÚ¿¡°Ô ÇÊ¿äÇÑ °ÍÀº º¯¼ö Áß Çϳª¶óµµ Á¦´ë·Î ´Ù·ïÁöÁö ¾ÊÀ¸¸é¼­ SQL ±¸¹®¿¡ »ç¿ëµÇ´Â °ÍÀÔ´Ï´Ù.

ÀÌ·¯ÇÑ ÇÊÅÍ´Â ÀϹÝÀûÀ¸·Î SELECT ±¸¹®¿¡¼­ WHERE, ORDER BY, LIMIT, OFFSET¿¡ »ç¿ëµË´Ï´Ù. µ¥ÀÌÅͺ£À̽º°¡ UNION ±¸Á¶¸¦ Áö¿øÇϸé, °ø°ÝÀÚ´Â ¿ø·¡ ÁúÀÇ¿¡ Àüü ÁúÀǸ¦ µ¡ºÙ¿©¼­ ÀÓÀÇÀÇ Å×ÀÌºí¿¡¼­ Æнº¿öµå¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ¾ÏȣȭµÈ Æнº¿öµå Çʵ带 °­·ÂÈ÷ ±ÇÇÕ´Ï´Ù.


SQL ÁúÀÇ °ø°Ý


°ËÁõµÇÁö ¾Ê´Â º¯¼ö¸¦ ÀüÀû »ç¿ëÀÚÀÇ ½Å·Ú¸¦ ¹Ï°í ÇÊÅ͸µÇÏÁö ¾Ê´Â´Ù¸é, ¹®Á¦´Â Ä¿Áú ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù. ´ÙÀ½ º¯¼ö¿¡ ÀÌ ÁúÀÇ('¿Í --·Î..)°¡ $query ¿¡¼­ »ç¿ëÇÏ´Â º¯¼ö Áß Çϳª¿¡ ÇÒ´çµÇ¸é, ¹®Á¦´Â Ä¿Áú ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù.

¿¹Á¦ (ex #1

<?php
$query  = "SELECT id, name, inserted, size FROM products
                  WHERE size = '$size'
                  ORDER BY $order LIMIT $limit, $offset;";
$result = mysql_query($query);
?>

´ÙÀ½ ÁúÀÇ·Î ºñ¹Ð¹øÈ£¾øÀÌ ´©±¸³ª Á¢¼ÓÀÌ °¡´ÉÇÏ°Ô º¯ÁúµÇ¾î ¹ö¸³´Ï´Ù.

¿¹Á¦ (ex #2
<?php
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

$query = "SELECT * FROM users WHERE user='{$_POST['username']}'
            AND password='{$_POST['password']}'";
mysql_query($query);

echo $query;
// °á°ú: SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''
?>

SQL UPDATEµµ °ø°Ý¹ÞÀ» ¼ö Àִµ¥, ÀÌ·± ÁúÀǸ¦ ¿ÏÀüÇÑ »õ ÁúÀǸ¦ µ¡ºÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ °ø°ÝÀÚ°¡ SET ÀýÀ» ´Ù·ê ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ÁúÀǸ¦ ¼º°øÀûÀ¸·Î º¯°æÇϱâ À§ÇÏ¿© ÀϺΠ½ºÅ°¸¶ Á¤º¸¸¦ °¡Áö°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.

¿¹Á¦ (ex #3
<?php
$query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";
?>

¾ÇÀÇÀûÀÎ »ç¿ëÀÚ°¡ $uid ¿¡ ' or uid like'%admin'; -- °ªÀ» ³Ö¾î¼­ °ü¸®ÀÚ Æнº¿öµå¸¦ º¯°æÇϰųª, $pwd ¿¡ "hehehe', admin='yes', trusted=100 "(¸¶Áö¸· °ø¹é Æ÷ÇÔ)À» ¼³Á¤ÇÏ¿© ±ÇÇÑÀ» ¾òÀ» ¼öµµ ÀÖ½À´Ï´Ù.

¿¹Á¦ (ex #4
<?php
// $uid == ' or uid like'%admin%'; --
$query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like
'%admin%'; --";

// $pwd == "hehehe', admin='yes', trusted=100 "
$query = "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100
WHERE ...;";
?>

µ¥ÀÌÅͺ£À̽º È£½ºÆ®ÀÇ OS µî±Þ ¸í·É¿¡ Á¢±ÙÇÏ´Â ¹®Á¦½Ã µÉ ¿¹Á¦ÀÔ´Ï´Ù.

¿¹Á¦ (ex #5
<?php
$query  = "SELECT * FROM products WHERE id LIKE '%$prod%'";
$result = mssql_query($query);
?>

°ø°ÝÀÚ°¡ $prod¿¡ a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- °ªÀ» Á¦ÃâÇϸé, $query´Â:

¿¹Á¦ (ex #6
<?php
$query  = "SELECT * FROM products
             WHERE id LIKE '%a%'
             exec master..xp_cmdshell 'net user test testpass /ADD'--";
$result = mssql_query($query);
?>

ÀÌ·¯ÇÑ °ø°ÝÀº ÁÖ·Î º¸¾ÈÀ» ¿°µÎ¿¡ µÎÁö ¾Ê°í, ¾²¿©Áø ÄÚµå Ãë¾àÁ¡¿¡¼­ ¹ß»ýÇÕ´Ï´Ù. ¾î¶°ÇÑ ÀԷµµ ¹Ï¾î¼­´Â ¾ÈµÇ¸ç, ÃֽŠ¹öÀüÀÌ¶óµµ Çѹø´õ ÇÊÅ͸µÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù.

ƯÈ÷ Ŭ¶óÀ̾ðÆ®Ãø¿¡¼­ ¿À´Â ÀÔ·ÂÀº ¹Ï¾î¼­´Â ¾ÈµË´Ï´Ù. select, hidden input Çʵå, ÄíÅ°µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ù ¹ø°, µÎ ¹ø° ¿¹Á¦¿¡¼­ ±×·¯ÇÑ ÁúÀÇ°¡ Å« ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖÀ½À» º¸¿©ÁÖ°í ÀÖ½À´Ï´Ù.
SQL ÀÎÁ§¼Ç ȸÇÇ


´ÙÀ½Àº ¾ÈÀüÇÑ ÁúÀÇ ¿¹Á¦°¡ µË´Ï´Ù.

¿¹Á¦ (ex #7

<?php
settype($offset, 'integer');
$query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET
               $offset;";

$query = sprintf("SELECT id, name FROM products ORDER BY
                    name LIMIT 20 OFFSET %d;", $offset);
?>

ÀÌ·¯ÇÑ ¹®Á¦¸¦ ȸÇÇÇϱâ À§ÇØ ¾ÈÀüÇÑ ¹æ¹ýÀ¸·Î ¹®ÀÚ¿­ ȸÇÇ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀε¥, mysql_real_escape_string() °¡ ±×°ÍÀÔ´Ï´Ù. mysql_real_escape_string ´Â mysql_query ¿¡¼­ Ư¼ö ¹®ÀÚ¿­À» À̽ºÄÉÀÌÇÁÇϱâ À§ÇØ »ç¿ëµÇ¸ç, ±×·¯¹Ç·Î SQL ÀÎÁ§¼Ç °ø°ÝÀÌ µ¿ÀÛÇÏÁö ¾Ê°í ÁúÀÇ°¡ Á¤È®ÇÏ°Ô ½ÇÇàµÉ °ÍÀÔ´Ï´Ù.

¿¹Á¦ (ex #8
<?php
if (isset($_POST['product_name']) &&
       isset($_POST['product_description']) &&
       isset($_POST['user_id'])) {
    // Á¢¼Ó
    $link = mysql_connect(
      'mysql_host',
      'mysql_user',
      'mysql_password'
    );
    if(!is_resource($link)) {
        echo "¼­¹ö Á¢¼Ó ½ÇÆÐ\n";
        // ... ¿À·ù¸¦ ÀûÀýÈ÷ ±â·Ï
    } else {
        // ONÀÏ °æ¿ì magic_quotes_gpc/magic_quotes_sybase È¿°ú Á¦°Å
        if(get_magic_quotes_gpc()) {
            $product_name        =
                stripslashes($_POST['product_name']);
            $product_description =
                stripslashes($_POST['product_description']);
        } else {
            $product_name        = $_POST['product_name'];
            $product_description = $_POST['product_description'];
        }
        // ¾ÈÀüÇÑ ÁúÀÇ ¸¸µé±â
        $query = sprintf("INSERT INTO products (
                          `name`, `description`, `user_id`)
                           VALUES ('%s', '%s', %d)",
               mysql_real_escape_string($product_name, $link),
               mysql_real_escape_string($product_description, $link),
               $_POST['user_id']);

        mysql_query($query, $link);

        if (mysql_affected_rows($link) > 0) {
            echo "Product inserted\n";
        }
    }
} else {
    echo "Fill the form property\n";
}
?>


¾Æ´Ï¸é addslashes() ¿Í str_replace() ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. addslashes() ´Â µ¥ÀÌÅͺ£À̽º ÁúÀÇ µî¿¡¼­ ó¸®ÇÒ ÇÊ¿ä°¡ ÀÖ´Â ¹®ÀÚ ¾Õ¿¡ ¹é½½·¡½Ã¸¦ ºÙÀÎ ¹®ÀÚ¿­À» ¹ÝȯÇÕ´Ï´Ù. ÀÌ ¹®ÀÚµéÀº ÀÛÀº µû¿ÈÇ¥('), Å« µû¿ÈÇ¥("), ¹é½½·¡½Ã(\), NUL(NULL ¹ÙÀÌÆ®)ÀÔ´Ï´Ù.

addslashes()¸¦ »ç¿ëÇÏ´Â ´ëÇ¥ÀûÀÎ ¿¹´Â µ¥ÀÌÅͺ£À̽º¿¡ µ¥ÀÌÅ͸¦ ³ÖÀ» ¶§ ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, µ¥ÀÌÅͺ£À̽º¿¡ O'reilly ¶ó´Â À̸§À» ³ÖÀ¸·Á°í ÇÒ¶§, À̽ºÄÉÀÌÇÁÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ µ¥ÀÌÅͺ£À̽º´Â \À» »ç¿ëÇϱ⿡ O\'reilly°¡ µÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ µ¥ÀÌÅ͸¦ µ¥ÀÌÅͺ£À̽º¿¡ ³ÖÀ¸¸é Ãß°¡ÇÑ \Àº ÀúÀåµÇÁö ¾Ê½À´Ï´Ù.

¿¹Á¦ (ex #9
<?php
$str = "Is your name O'reilly?";

// Ãâ·Â: Is your name O\'reilly?
echo addslashes($str);
?>
ÃßõÃßõ : 264 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
2,795
[mySql] ´Ù¾çÇÑ db°Ë»ö ½ºÅ³ ÃÑÁ¤¸® (¶ç¿ö¾²±â ¹«½Ã, ´ÙÁß°Ë»ö, Æ÷ÇԵǴ ´Ü¾î °Ë»ö)
2,794
php sqlÀÎÁ§¼Ç °ø°Ý¸·±â
[php] SQL ÀÎÁ§¼Ç °ø°Ý
2,792
[PHP] Á¤±ÔÇ¥Çö½ÄÀ» ÀÌ¿ëÇÑ Æ¯¼ö¹®ÀÚ ¼ýÀÚÁ¦°Å
2,791
Á¤±ÔÇ¥Çö½Ä - ÆÐÅÏ º¯°æÀÚ
2,790
PHP ȯ°æº¯¼ö Á¤¸®
2,789
PHP Ŭ·¡½º »ç¿ë¹æ¹ý Á¤¸®
2,788
php¿¡¼­ º¯¼ö°ªÀ» ÇÔ¼öÀ̸§À¸·Î »ç¿ëÇÏ¿© ÇÔ¼ö ½ÇÇàÇÏ´Â ¹æ¹ý
2,787
repaceÀ» ÀÌ¿ëÇÑ Á¤±Ô½Ä ¸ðÀ½
2,786
HTML ÆäÀÌÁö¿¡¼­ ÁÖ¼®À» Á¦°ÅÇÏ´Â Á¤±Ô½Ä(PHP)
2,785
PHP - ¹®ÀÚ¿­¿¡¼­ HTMLÅÂ±× Á¦°Å + Á¤±Ô½Ä
2,784
PHP Á¤±Ô½ÄÀ» È°¿ëÇÑ ÅÂ±× ¹× ƯÁ¤ ¹®ÀÚ¿­ Á¦°Å ¹× ÃßÃâ ¹æ¹ý
2,783
PHP Á¤±Ô½Ä Á¤¸®
2,782
Á¤±Ô½Ä ÆÐÅÏ ¹®¹ý
2,781
[Á¤±ÔÇ¥Çö½Ä]Á¤±ÔÇ¥Çö½Ä Á¤¸®
2,780
fopen ¸·ÇûÀ» ¶§ fsocketopen »ç¿ë¹æ¹ý
2,779
[php]¿øÇÏ´Â ´Ü¾î¸¦ ã¾Æ¼­ ġȯ ÇØÁÖ´Â ¹æ¹ý preg_replace
2,778
PHP + MYSQL ¿¬°á Å×½ºÆ® ¿¹Á¦ (mysqli Ŭ·¡½º¹æ½Ä)
2,777
PHP + MYSQL ¿¬°á Å×½ºÆ® ¿¹Á¦ (pdo ¹æ½Ä)
2,776
PHP + MYSQL ¿¬°á Å×½ºÆ® ¿¹Á¦ (original)
2,775
DB Á¢±Ù ¹× Äõ¸®¹®(insert,select,update,delete)
2,774
[MySQL] Çʵ忡¼­ ƯÁ¤¹®ÀÚ Æ÷ÇÔ ¶Ç´Â Á¦¿ÜÇÑ DB °Ë»ö, LIKE ,NOT
2,773
jQuery ÇÙ½É - ³ëµå ´Ù·ç±â
2,772
jQuery show() / hide() / toggle() »ç¿ë¹ý
2,771
[jQuery] readyÀÇ »ç¿ë¹ý
2,770
[jQuery] À§Ä¡±â¹Ý Selector
2,769
[jQuery] css selector
2,768
document.getElementByTagName()¸¦ jQuery·Î ¹Ù²ãº¸ÀÚ.
2,767
getElementsByClassName¸¦ jQuery·Î ¹Ù²ãº¸ÀÚ.
2,766
getElementById¸¦ jQuery·Î ¹Ù²ãº¸ÀÚ
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.