{"id":1974,"date":"2015-09-29T22:20:49","date_gmt":"2015-09-29T22:20:49","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1974"},"modified":"2025-06-13T23:47:41","modified_gmt":"2025-06-14T06:47:41","slug":"couchbase-and-n1ql-security-centeredgesoftware","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-and-n1ql-security-centeredgesoftware\/","title":{"rendered":"CenterEdge Software\uc758 \uac8c\uc2a4\ud2b8 \uac8c\uc2dc\ubb3c\uc785\ub2c8\ub2e4: \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc640 N1QL \ubcf4\uc548"},"content":{"rendered":"<p><strong>\ucc38\uace0: \uc774 \uac8c\uc2dc\ubb3c\uc740 <a href=\"mailto:bburnett@centeredgesoftware.com\">\ube0c\ub79c\ud2b8 \ubc84\ub137<\/a> \uc758 <a href=\"https:\/\/centeredgesoftware.com\/\" target=\"_blank\" rel=\"noopener\">CenterEdge \uc18c\ud504\ud2b8\uc6e8\uc5b4<\/a>\ub294 \ub180\uc774\uacf5\uc6d0, \ub808\uc800 \ubc0f \uc5d4\ud130\ud14c\uc778\uba3c\ud2b8 \uc0b0\uc5c5\uc744 \uc704\ud55c POS \ubc0f \ud2b9\uc218 \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub97c \uac1c\ubc1c\ud558\ub294 \ud68c\uc0ac\uc785\ub2c8\ub2e4.<\/strong><\/p>\n<h2>\uac1c\uc694<\/h2>\n<p>N1QL\uc740 \ub180\ub78d\ub3c4\ub85d \uac15\ub825\ud55c \uc0c8 \ub3c4\uad6c\ub85c, \ud559\uc2b5 \uace1\uc120\uc774 \ud6e8\uc52c \uc595\uc73c\uba74\uc11c\ub3c4 \ub354 \ub9ce\uc740 \uac1c\ubc1c\uc790\uc5d0\uac8c NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc81c\uacf5\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.  \uc774\ub97c \ud1b5\ud574 \uac1c\ubc1c\uc790\ub294 \uadf8 \uc5b4\ub290 \ub54c\ubcf4\ub2e4 \ube60\ub974\uace0 \uc27d\uac8c \uace0\uc131\ub2a5\uc758 \uac15\ub825\ud55c \uace0\uae09 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \ud558\uc9c0\ub9cc \uc0c8\ub85c\uc6b4 \uae30\uc220\uc774 \ub3c4\uc785\ub418\uba74 \ud574\ucee4\uac00 \uacf5\uaca9\ud560 \uc218 \uc788\ub294 \uc601\uc5ed\uc774 \ubcf8\uc9c8\uc801\uc73c\ub85c \ub298\uc5b4\ub0a9\ub2c8\ub2e4.<\/p>\n<p>SQL \uc778\uc81d\uc158\uc740 SQL \uae30\ubc18 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ud754\ud788 \ubc1c\uacac\ub418\ub294 \uc798 \uc54c\ub824\uc9c4 \ubcf4\uc548 \uacb0\ud568\uc73c\ub85c, \uc218\ub144\uc5d0 \uac78\uccd0 \uc798 \ubb38\uc11c\ud654\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.  \uadf8\ub807\ub2e4\uba74 \ubcf4\uc548 \uce21\uba74\uc5d0\uc11c N1QL\uc740 SQL\uacfc \uc5b4\ub5bb\uac8c \ube44\uad50\ub420\uae4c\uc694?  N1QL\ub3c4 \uc778\uc81d\uc158 \uacf5\uaca9\uc5d0 \ucde8\uc57d\ud560\uae4c\uc694? \uadf8\ub807\ub2e4\uba74 \uac1c\ubc1c\uc790\ub294 \uc774\ub7ec\ud55c \ud568\uc815\uc744 \uc5b4\ub5bb\uac8c \ud53c\ud560 \uc218 \uc788\uc744\uae4c\uc694?<\/p>\n<h2>SQL \uc8fc\uc785\uc5d0 \ub300\ud55c \uac80\ud1a0<\/h2>\n<p>SQL \uc778\uc81d\uc158\uc740 \ucd5c\uc885 \uc0ac\uc6a9\uc790\uac00 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc2e4\ud589 \uc911\uc778 SQL \ucffc\ub9ac\uc5d0 \uc545\uc131 \ucf54\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\ub294 \ucf54\ub4dc \uc778\uc81d\uc158\uc758 \ud55c \ud615\ud0dc\uc785\ub2c8\ub2e4. \uac04\ub2e8\ud55c \uc608\ub294 \uc774 \ucffc\ub9ac\uc785\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-cs\">var query = \"SELECT * FROM users WHERE name ='\" + userName + \"'\";<\/code><\/pre>\n<p>\uac1c\ubc1c\uc790\uac00 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ubcf4\ud638\ud558\uae30 \uc704\ud55c \uc870\uce58\ub97c \ucde8\ud558\uc9c0 \uc54a\uc73c\uba74 \uc0ac\uc6a9\uc790\uac00 \uc0ac\uc6a9\uc790 \uc774\ub984 \ud544\ub4dc\uc5d0 \uc545\uc131 \ud14d\uc2a4\ud2b8\ub97c \ud3ec\ud568\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4<\/p>\n<pre><code class=\"language-sql\">SELECT * FROM users WHERE name = '' OR '1'='1';<\/code><\/pre>\n<p>\uc774 \ucffc\ub9ac\ub294 \uc0ac\uc6a9\uc790\uac00 \"' \ub610\ub294 '1'='1\"\uc744 \uc785\ub825\ud55c \uacb0\uacfc\uc785\ub2c8\ub2e4. \uc774\uc81c \uc774 \ucffc\ub9ac\ub294 \uc2dc\uc2a4\ud15c\uc758 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\ub97c \uc545\uc758\uc801\uc778 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub354 \uac15\ub825\ud55c \ucffc\ub9ac \ubcc0\uacbd\uc744 \ud5c8\uc6a9\ud558\uae30 \uc704\ud574 \uc545\uc758\uc801\uc778 \uc0ac\uc6a9\uc790\ub294 \ub313\uae00\uc744 \uc0ac\uc6a9\ud558\uc5ec \uac1c\ubc1c\uc790\uc758 \ucffc\ub9ac \uc77c\ubd80\ub97c \uc81c\uc678\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc804 \uc608\uc81c\ub97c \ud655\uc7a5\ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-sql\">var query = \"SELECT * FROM users WHERE name = '\" + userName + \"' AND group = 5\";<\/code><\/pre>\n<p>\uc8fc\uc785\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-sql\">SELECT * FROM users WHERE name = '' OR 1=1 --' AND group = 5<\/code><\/pre>\n<p>SQL\uc740 \"-\" \uc774\ud6c4\uc758 \ubaa8\ub4e0 \ud14d\uc2a4\ud2b8\ub97c \ubb34\uc2dc\ud558\ubbc0\ub85c \uc774\uc81c \uadf8\ub8f9\uc774 5\uc5ec\uc57c \ud55c\ub2e4\ub294 \uc81c\ud55c\uc774 \ucffc\ub9ac\uc5d0\uc11c \uc81c\uac70\ub429\ub2c8\ub2e4. \ub2e4\uc2dc \ud55c \ubc88 \uc2dc\uc2a4\ud15c\uc758 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\uac00 \uc545\uc758\uc801\uc778 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ubc18\ud658\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc0ac\uc6a9\uc790\ub294 \ub313\uae00\uc744 \ubc30\uce58 \uba85\ub839\uacfc \uacb0\ud569\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ub370\uc774\ud130\ub97c \ubcc0\uacbd\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-sql\">SELECT * FROM users WHERE name = 'blah'; DROP TABLE auditlog \/*\u2019AND group = 5<\/code><\/pre>\n<h2>\uc774\uac83\uc774 N1QL\uc5d0 \uc5b4\ub5a4 \uc601\ud5a5\uc744 \ubbf8\uce58\ub098\uc694?<\/h2>\n<p>\uba87 \uac00\uc9c0 \uc2e4\ud5d8 \uacb0\uacfc, N1QL\uc740 \uc2e4\uc81c\ub85c \uae30\uc874 SQL\ubcf4\ub2e4 \uc778\uc81d\uc158 \uacf5\uaca9\uc5d0 \ub354 \uac15\ud55c \uac83\uc73c\ub85c \ub098\ud0c0\ub0ac\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, N1QL\uc740 \ud604\uc7ac \uc5ec\ub7ec \uba85\ub839\uc744 \uc77c\uad04 \ucc98\ub9ac\ud558\ub294 \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c SQL\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc545\uc758\uc801\uc73c\ub85c \uc218\uc815\ud560 \uc218 \uc788\ub294 \uc77c\uad04 \ucc98\ub9ac \uacf5\uaca9\uc5d0 \ub300\uc751\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, SQL\uc5d0\uc11c \uc791\ub3d9\ud560 \uc218 \uc788\ub294 \uc774\ub7ec\ud55c \uc778\uc81d\uc158 \uacf5\uaca9\uc740 \uc798\ubabb\ub41c \uad6c\ubb38\uc73c\ub85c \uac70\ubd80\ub429\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-sql\">SELECT * FROM users WHERE name = ''; UPDATE users SET password = \u20181234\u2019; SELECT * FROM users WHERE name = ''\r\n<\/code><\/pre>\n<p>\uadf8\ub7ec\ub098 \uc545\uc758\uc801\uc778 \uc0ac\uc6a9\uc790\uac00 \uacf5\uaca9\uc744 \uc218\ud589\ud560 \uc218 \uc788\ub294 \uc635\uc158\uc740 \uc5ec\uc804\ud788 \uc874\uc7ac\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uacf5\uaca9\uc744 \ubcf4\ud638\ud558\uc9c0 \uc54a\uc73c\uba74 \ubcf4\uc548 \ub370\uc774\ud130\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4\ub97c \ud5c8\uc6a9\ud558\uac70\ub098 \ubcc0\uacbd\ub41c \ucffc\ub9ac\uac00 Couchbase \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c \ub108\ubb34 \ub9ce\uc740 \ucc98\ub9ac \ub2a5\ub825\uc744 \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc11c\ube44\uc2a4 \uac70\ubd80\ub97c \ucd08\ub798\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub610\ud55c \uc77c\uad04 \ucc98\ub9ac\uc640 \uac19\uc740 \uc77c\ubd80 \uae30\ub2a5\uc740 \ud5a5\ud6c4 N1QL \ubc84\uc804\uc5d0 \ud655\uc2e4\ud788 \ucd94\uac00\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uac1c\ubc1c\uc790\uac00 \ucffc\ub9ac\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc785\ub825\uc744 \ubcf4\ud638\ud558\uc9c0 \uc54a\uc73c\uba74 \ud5a5\ud6c4 \ub370\uc774\ud130 \uc218\uc815\uc774 \ubb38\uc81c\uac00 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc808 \uc218\uc815 \uc0ac\ud56d<\/h2>\n<p>SQL \uc8fc\uc785\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c N1QL \uc8fc\uc785\uc5d0\uc11c\ub294 WHERE \uc808\uc744 \ubcc0\uacbd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4<\/p>\n<pre><code class=\"language-sql\">var query = \"SELECT * FROM users WHERE name = '\" + userName + \"'\";<\/code><\/pre>\n<p>\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-sql\">SELECT * FROM users WHERE name = '' OR '1'='1'\r\n<\/code><\/pre>\n<p>AND \ubc0f OR \uc5f0\uc0b0\uc790\uc5d0 \ub300\ud55c \uc5f0\uc0b0\uc790 \uc6b0\uc120\uc21c\uc704 \uaddc\uce59\uc73c\ub85c \uc778\ud574 \uc774 \uacf5\uaca9\uc740 \ucd94\uac00 \uc808\uc774 \uc788\ub294 \uacbd\uc6b0\uc5d0\ub3c4 \uc791\ub3d9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-sql\">var query = \"SELECT * FROM users WHERE name LIKE '%\" userName + \"%' AND group = 5<\/code><\/pre>\n<p>\ub420 \ub54c \uc5ec\uc804\ud788 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-sql\">SELECT * FROM users WHERE name LIKE '%' OR ''='%' AND group = 5<\/code><\/pre>\n<h2>N1QL \ub313\uae00<\/h2>\n<p>N1QL\uc758 \uc8fc\uc11d \uc2dc\uc2a4\ud15c\uc740 \"-\"\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub098\uba38\uc9c0 \uc904\uc744 \uc8fc\uc11d \ucc98\ub9ac\ud558\ub294 \ub300\uc2e0 C \uc2a4\ud0c0\uc77c \uc8fc\uc11d \ube14\ub85d(\/* \uc8fc\uc11d *\/)\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774\ub294 \uc77c\ubd80 \uace0\uae09 \uc778\uc81d\uc158 \uacf5\uaca9\uc73c\ub85c\ubd80\ud130 N1QL\uc744 \ubcf4\ud638\ud569\ub2c8\ub2e4. N1QL\uc740 \ub2eb\ub294 \uc8fc\uc11d *\/\uc774 \ud544\uc694\ud558\ubbc0\ub85c \uacf5\uaca9\uc790\ub294 \uad6c\ubb38 \uc624\ub958\ub97c \uc77c\uc73c\ud0a4\uc9c0 \uc54a\uace0\ub294 \ucffc\ub9ac\uc758 \uc77c\ubd80\ub97c \uc8fc\uc11d \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub7ec\ub098 \uc774\ub294 \uac1c\ubc1c\uc790\uac00 \ucffc\ub9ac\uc5d0 \ub313\uae00\uc744 \ub0a8\uae30\uc9c0 \uc54a\ub294 \uacbd\uc6b0\uc5d0\ub9cc \ud574\ub2f9\ub429\ub2c8\ub2e4. \ucffc\ub9ac \ud14d\uc2a4\ud2b8\uc5d0 \ub313\uae00\uc774 \uc788\ub294 \uacbd\uc6b0 \uc0ac\uc6a9\uc790\ub294 \uc774\uc81c \ub2eb\ub294 \ub313\uae00 \ube14\ub85d\uc744 \uc720\uc6a9\ud558\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-sql\">var query = \"SELECT * FROM users WHERE name = '\" + userName + \"' AND group = 5 \/* only return group 5 *\/\";<\/code><\/pre>\n<p>\"OR 1=1 \/*\" \uc0bd\uc785 \uac00\ub2a5:<\/p>\n<pre><code class=\"language-sql\">SELECT * FROM users WHERE name = '' OR 1=1 \/*' AND group = 5 \/* only return group 5 *\/<\/code><\/pre>\n<p>SQL \uc608\uc81c\uc5d0\uc11c\uc640 \uac19\uc774 \uc774\uc81c \ucffc\ub9ac\uc5d0\uc11c \uadf8\ub8f9 \uc81c\ud55c\uc774 \uc81c\uac70\ub429\ub2c8\ub2e4.<\/p>\n<h2>N1QL \uc2dd\ubcc4\uc790 \uc8fc\uc785<\/h2>\n<p>Couchbase\uc758 \uc2a4\ud0a4\ub9c8 \uc5c6\ub294 \ubb38\uc11c \ubaa8\ub378\uc740 \uc2e4\uc81c\ub85c \ud765\ubbf8\ub85c\uc6b4 \uc0c8\ub85c\uc6b4 \uacf5\uaca9 \uc601\uc5ed\uc744 \ub9cc\ub4e4\uc5b4\ub0c5\ub2c8\ub2e4. SQL\ub85c \uc791\uc5c5\ud560 \ub54c \ucffc\ub9ac\uc758 WHERE \ub610\ub294 ORDER BY \uc808\uc744 \uc81c\uc678\ud55c \ub2e4\ub978 \uacf3\uc5d0 \uc0ac\uc6a9\uc790 \uc785\ub825\uc744 \ud3ec\ud568\ud558\ub294 \uacbd\uc6b0\ub294 \ub9e4\uc6b0 \ub4dc\ubb45\ub2c8\ub2e4. \ud14c\uc774\ube14\uacfc \uc5f4 \uc774\ub984\uc740 \uc798 \uc54c\ub824\uc838 \uc788\uace0 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub7ec\ub098 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubb38\uc11c\uc5d0 \ub300\ud55c \uc2a4\ud0a4\ub9c8\uac00 \uc5c6\ub2e4\ub294 \uac83\uc740 \uac1c\ubc1c\uc790\uac00 \uc0ac\uc6a9\uc790\uac00 \ubb38\uc11c\uc5d0\uc11c \uc120\ud0dd\ud558\ub294 \ud544\ub4dc\ub97c \uc81c\uc5b4\ud560 \uc218 \uc788\ub3c4\ub85d \ud5c8\uc6a9\ud558\uace0 \uc2f6\ub2e4\ub294 \uc720\ud639\uc744 \ubc1b\uc744 \uc218 \uc788\uc74c\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-cs\">var query = \"SELECT \" + field + \" FROM users WHERE type = 'user'\";<\/code><\/pre>\n<p>\uc8fc\uc785 \ud6c4<\/p>\n<pre><code class=\"language-sql\">SELECT name, (SELECT * FROM users as users2 USE KEYS users.userPasswordDocumentIds) as passwordDoc FROM users WHERE type = 'user'<\/code><\/pre>\n<p>\uc774\uc81c \uacf5\uaca9\uc790\ub294 \uac1c\ubc1c\uc790\uac00 \uc9c0\uc815\ud55c \uc0ac\uc6a9\uc790 \ubb38\uc11c\uc5d0 \uc5c6\ub294 \uad00\ub828 \ube44\ubc00\ubc88\ud638 \ubb38\uc11c\uc758 \ub370\uc774\ud130\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ubcf4\ud638\ud558\ub294 \ubc29\ubc95<\/h2>\n<p>\ub2e4\ud589\ud788\ub3c4 N1QL \uc778\uc81d\uc158 \uacf5\uaca9\uc73c\ub85c\ubd80\ud130 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ubcf4\ud638\ud558\ub294 \uac83\uc740 SQL \uc778\uc81d\uc158 \uacf5\uaca9\uc73c\ub85c\ubd80\ud130 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ubcf4\ud638\ud558\ub294 \uac83\ub9cc\ud07c\uc774\ub098 \uc27d\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ubcf4\uc548\uc744 \uc27d\uac8c \ud560 \uc218 \uc788\ub294 \uba87 \uac00\uc9c0 \uc9c0\uce68\uc785\ub2c8\ub2e4. \uc608\uc81c\ub294 C#\ub85c \ub418\uc5b4 \uc788\uc9c0\ub9cc \uac1c\ub150\uc740 \ub2e4\ub978 \uc5b8\uc5b4\uc5d0\ub3c4 \ub611\uac19\uc774 \uc801\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n<ol>\n<li><strong>\ubaa8\ubc94 \uc0ac\ub840:<\/strong> \uc0ac\uc6a9\uc790 \uc785\ub825\uc744 \ucffc\ub9ac\uc5d0 \uc9c1\uc811 \uc0bd\uc785\ud558\ub294 \ub300\uc2e0 \uc774\ub984 \ub610\ub294 \uc704\uce58 \ub9e4\uac1c\ubcc0\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubcf4\ud638\ud558\uc138\uc694. \uc774\ub807\uac8c \ud558\uba74 \uc0ac\uc6a9\uc790 \uc785\ub825\uc774 \ucffc\ub9ac\uc5d0 \uc9c1\uc811 \ucd94\uac00\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ubaa8\ub4e0 \uc778\uc81d\uc158 \uacf5\uaca9\uc5d0 \ub300\ud574 100% \ubcf4\ud638 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.\n<pre><code class=\"language-cs\">var query = \"SELECT * FROM users WHERE userName = '\" + userName + \"'\";<\/code><\/pre>\n<p>\uadf8\ub798\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-cs\">var query = new QueryRequest(\"SELECT * FROM users WHERE userName = $userName\");\r\nquery.AddNamedParameter(\u201c$userName\u201d, userName);<\/code><\/pre>\n<\/li>\n<li><strong>\ubaa8\ubc94 \uc0ac\ub840 #2:<\/strong> \ucffc\ub9ac \ud14d\uc2a4\ud2b8\ub97c \uc0dd\uc131\ud558\ub294 \uc5b8\uc5b4 \uad6c\uc870(\uc608: .Net POCO \ub610\ub294 Java POJO)\ub294 \uac15\ub825\ud558\uac8c \uc720\ud615\ud654\ub41c \uc5b8\uc5b4 \uad6c\uc870\ub97c \uc0ac\uc6a9\ud558\uc138\uc694. \uc608\ub97c \ub4e4\uc5b4, Linq2Couchbase \ub77c\uc774\ube0c\ub7ec\ub9ac(https:\/\/github.com\/couchbaselabs\/Linq2Couchbase)\ub294 LINQ \ucffc\ub9ac\uc5d0\uc11c N1QL\uc744 \uc0dd\uc131\ud560 \ub54c \uc801\uc808\ud55c \uc774\uc2a4\ucf00\uc774\ud504\ub97c \ucc98\ub9ac\ud569\ub2c8\ub2e4.<\/li>\n<li>\ucffc\ub9ac\uc5d0 \uc0ac\uc6a9\uc790 \uc785\ub825 \ubb38\uc790\uc5f4\uc744 \uc0bd\uc785\ud558\ub294 \uacbd\uc6b0 \ud56d\uc0c1 \ub530\uc634\ud45c\ub97c \uc774\uc2a4\ucf00\uc774\ud504 \ucc98\ub9ac\ud558\uc138\uc694.  \uc791\uc740\ub530\uc634\ud45c(')\uc758 \ubaa8\ub4e0 \uc778\uc2a4\ud134\uc2a4\ub97c \uc791\uc740\ub530\uc634\ud45c(\") \ub450 \uac1c\ub85c \ubc14\uafc9\ub2c8\ub2e4.\n<pre><code class=\"language-cs\">var query = \"SELECT * FROM users WHERE userName = '\" + userName + \"'\";<\/code><\/pre>\n<p>\uadf8\ub798\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-cs\">var query = \"SELECT * FROM users WHERE userName = '\" + userName.Replace(\"'\", \"''\") + \"'\";<\/code><\/pre>\n<\/li>\n<li>When inserting user input identifiers into your query, always escape the identifier with ticks (`). Then replace any instance of a tick in the input with two ticks (&#8220;). Note that there is no named parameter equivalent for identifiers, so escaping is the identifier is the best solution.\n<pre><code class=\"language-cs\">var query = \"SELECT \" + field + \" FROM users WHERE group = 5\";<\/code><\/pre>\n<p>\uadf8\ub798\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-cs\">var query = \"SELECT `\" + field.Replace(\"`\", \"``\") + \"` FROM users WHERE group = 5\";<\/code><\/pre>\n<\/li>\n<li>\ub2e4\ub978 \uaddc\uce59\uc744 \uad6c\ud604\ud558\uba74 \ub313\uae00 \uae30\ubc18 \uacf5\uaca9\uc73c\ub85c\ubd80\ud130\ub3c4 \ubcf4\ud638\ubc1b\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uadf8\ub7ec\ub098 \uac1c\ubc1c\uc790\uac00 \ub2e4\ub978 \uaddc\uce59\uc744 \uc78a\uc5b4\ubc84\ub9ac\ub294 \uacbd\uc6b0\ub97c \ub300\ube44\ud558\uc5ec \uc0ac\uc6a9\uc790 \uc785\ub825\uc774 \ud3ec\ud568\ub41c \ucffc\ub9ac\uc758 \ub313\uae00\uc5d0 \ub300\ud55c \ubcf4\uc870 \uc815\ucc45\uc744 \uc0ac\uc6a9\ud558\uba74 \ucd94\uac00\uc801\uc778 \ubcf4\ud638 \uae30\ub2a5\uc744 \uc81c\uacf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub300\uc2e0 \ucffc\ub9ac \uc790\uccb4 \ub300\uc2e0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ucf54\ub4dc\uc5d0 \ub313\uae00\uc744 \ub123\uc73c\uba74 \ub429\ub2c8\ub2e4.\n<pre><code class=\"language-cs\">var query = \"SELECT * FROM users WHERE userName = '\" + userName + \"' AND group = 5 \/* only return group 5 *\/\";<\/code><\/pre>\n<p>\uadf8\ub798\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-cs\">var query = \"SELECT * FROM users WHERE userName = '\" + userName.Replace(\"'\", \"''\u201d) + \"' AND group = 5\"; \/\/ only return group 5<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>\uc774\ub7ec\ud55c \uacf5\uaca9\uc758 \uc608\uc640 C#\uc758 \ubcf4\ud638 \ubc29\ubc95\uc744 \ubcf4\ub824\uba74 \uc774 \uae43\ud5c8\ube0c \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \ucc38\uc870\ud558\uc138\uc694: <a href=\"https:\/\/github.com\/brantburnett\/N1QlInjection\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/brantburnett\/N1QlInjection<\/a>. \ud14c\uc2a4\ud2b8\ub97c \uc2e4\ud589\ud558\ub824\uba74 \ub85c\uceec\uc5d0 Couchbase\uac00 \uc124\uce58\ub418\uc5b4 \uc788\uace0 \ub9e5\uc8fc \uc0d8\ud50c\uc774 \uc124\uce58\ub418\uc5b4 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h2>\uacb0\ub860<\/h2>\n<p>N1QL\uc740 \uc778\uc81d\uc158 \uacf5\uaca9\uc5d0 \ucde8\uc57d\ud558\uc9c0\ub9cc, \uc774 \ucde8\uc57d\uc810\uc740 SQL\uc758 \uc798 \uc54c\ub824\uc9c4 \ucde8\uc57d\uc810\ubcf4\ub2e4 \ub354 \ub098\uc058\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uac1c\ubc1c\uc790\uac00 \uc778\uc81d\uc158 \uacf5\uaca9\uc73c\ub85c\ubd80\ud130 \ubcf4\ud638\ud558\ub294 \uac83\uc740 \ub9e4\uc6b0 \uc27d\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c N1QL\uc740 Couchbase NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc548\uc804\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c\ud558\uae30 \uc704\ud55c \ud6cc\ub96d\ud55c \ud50c\ub7ab\ud3fc\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>","protected":false},"excerpt":{"rendered":"<p>Note: this is a guest post by Brant Burnett of CenterEdge Software, a company which developes POS and specialty software for the amusement park, leisure and entertainment industries. Overview N1QL is an incredibly powerful new tool which will help to [&hellip;]<\/p>","protected":false},"author":21,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,10127,1813,1812,2201],"tags":[],"ppma_author":[8970],"class_list":["post-1974","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-c-sharp","category-security","category-n1ql-query","category-tools-sdks"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Guest post from CenterEdge Software- The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-and-n1ql-security-centeredgesoftware\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Guest post from CenterEdge Software: Couchbase and N1QL Security\" \/>\n<meta property=\"og:description\" content=\"Note: this is a guest post by Brant Burnett of CenterEdge Software, a company which developes POS and specialty software for the amusement park, leisure and entertainment industries. Overview N1QL is an incredibly powerful new tool which will help to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-and-n1ql-security-centeredgesoftware\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-29T22:20:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:47:41+00:00\" \/>\n<meta name=\"author\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jeffrysmorris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/\"},\"author\":{\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\"},\"headline\":\"Guest post from CenterEdge Software: Couchbase and N1QL Security\",\"datePublished\":\"2015-09-29T22:20:49+00:00\",\"dateModified\":\"2025-06-14T06:47:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/\"},\"wordCount\":1066,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\".NET\",\"C#\",\"Security\",\"SQL++ \/ N1QL Query\",\"Tools &amp; SDKs\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/\",\"name\":\"Guest post from CenterEdge Software- The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-09-29T22:20:49+00:00\",\"dateModified\":\"2025-06-14T06:47:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guest post from CenterEdge Software: Couchbase and N1QL Security\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\",\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"caption\":\"Jeff Morris, Senior Software Engineer, Couchbase\"},\"description\":\"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).\",\"sameAs\":[\"https:\/\/x.com\/jeffrysmorris\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/jeff-morris\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Guest post from CenterEdge Software- The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-and-n1ql-security-centeredgesoftware\/","og_locale":"ko_KR","og_type":"article","og_title":"Guest post from CenterEdge Software: Couchbase and N1QL Security","og_description":"Note: this is a guest post by Brant Burnett of CenterEdge Software, a company which developes POS and specialty software for the amusement park, leisure and entertainment industries. Overview N1QL is an incredibly powerful new tool which will help to [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-and-n1ql-security-centeredgesoftware\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-09-29T22:20:49+00:00","article_modified_time":"2025-06-14T06:47:41+00:00","author":"Jeff Morris, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@jeffrysmorris","twitter_misc":{"Written by":"Jeff Morris, Senior Software Engineer, Couchbase","Est. reading time":"7\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/"},"author":{"name":"Jeff Morris, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341"},"headline":"Guest post from CenterEdge Software: Couchbase and N1QL Security","datePublished":"2015-09-29T22:20:49+00:00","dateModified":"2025-06-14T06:47:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/"},"wordCount":1066,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":[".NET","C#","Security","SQL++ \/ N1QL Query","Tools &amp; SDKs"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/","name":"Guest post from CenterEdge Software- The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-09-29T22:20:49+00:00","dateModified":"2025-06-14T06:47:41+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-n1ql-security-centeredgesoftware\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Guest post from CenterEdge Software: Couchbase and N1QL Security"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341","name":"Jeff Morris, \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812","url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","caption":"Jeff Morris, Senior Software Engineer, Couchbase"},"description":"Jeff Morris\ub294 Couchbase\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. Couchbase\uc5d0 \uc785\uc0ac\ud558\uae30 \uc804\uc5d0\ub294 6\ub144 \ub3d9\uc548 Source Interlink\uc5d0\uc11c \uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc6f9 \uc544\ud0a4\ud14d\ud2b8\ub85c \uadfc\ubb34\ud588\uc2b5\ub2c8\ub2e4. Jeff\ub294 Couchbase SDK \uac1c\ubc1c\uacfc N1QL(\ucffc\ub9ac \uc5b8\uc5b4)\uacfc \ud1b5\ud569\ud558\ub294 \ubc29\ubc95\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/x.com\/jeffrysmorris"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/jeff-morris\/"}]}},"authors":[{"term_id":8970,"user_id":21,"is_guest":0,"slug":"jeff-morris","display_name":"Jeff Morris, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","author_category":"","last_name":"Jeff Morris, Senior Software Engineer, Couchbase","first_name":"Jeff","job_title":"","user_url":"","description":"Jeff Morris\ub294 Couchbase\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. Couchbase\uc5d0 \uc785\uc0ac\ud558\uae30 \uc804\uc5d0\ub294 6\ub144 \ub3d9\uc548 Source Interlink\uc5d0\uc11c \uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc6f9 \uc544\ud0a4\ud14d\ud2b8\ub85c \uadfc\ubb34\ud588\uc2b5\ub2c8\ub2e4. Jeff\ub294 Couchbase SDK \uac1c\ubc1c\uacfc N1QL(\ucffc\ub9ac \uc5b8\uc5b4)\uacfc \ud1b5\ud569\ud558\ub294 \ubc29\ubc95\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1974"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1974\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=1974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1974"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}