{"componentChunkName":"component---node-modules-stvad-gatsby-theme-garden-src-templates-roam-page-js","path":"/e82c0","result":{"data":{"roamPage":{"title":"환경 변수","childMdx":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"환경-변수\"\n  }, \"\\uD658\\uACBD \\uBCC0\\uC218\"));\n}\n;\nMDXContent.isMDXComponent = true;","outboundReferences":[],"inboundReferences":[{"__typename":"Mdx","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Block = makeShortcode(\"Block\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(Block, {\n    id: \"0BYrTfVz1\",\n    content: mdx(React.Fragment, null, mdx(\"p\", null, \"\", mdx(\"a\", {\n      parentName: \"p\",\n      \"href\": \"/e82c0\",\n      \"title\": \"환경 변수\",\n      \"className\": \" internal-link\"\n    }, \"\\uD658\\uACBD \\uBCC0\\uC218\"), \"\\uB294 \\uADF8 \\uD2B9\\uC131\\uC0C1 Secret key \\uAC19\\uC740 \\uBBFC\\uAC10\\uD55C \\uC790\\uB8CC\\uB97C \\uB2E4\\uB8E8\\uB294\\uB370, \\uC704 \\uAD6C\\uC870\\uC5D0\\uC11C\\uB294 \\uD574\\uB2F9 \\uAC12\\uC774 \\uB7F0\\uD0C0\\uC784\\uC5D0 \\uB178\\uCD9C\\uB41C\\uB2E4\\uB294 \\uC810\\uC744 \\uC27D\\uAC8C \\uC54C\\uAE30 \\uC5B4\\uB835\\uB2E4.\")),\n    mdxType: \"Block\"\n  }, mdx(Block, {\n    id: \"qUmPCgDae\",\n    content: mdx(React.Fragment, null, mdx(\"p\", null, \"\", mdx(\"a\", {\n      parentName: \"p\",\n      \"href\": \"/NextJS\",\n      \"title\": \"NextJS\",\n      \"className\": \" internal-link\"\n    }, \"NextJS\"), \"\\uC5D0\\uC11C \\uC774\\uB7EC\\uD55C \\uAC12\\uC744 \", mdx(\"inlineCode\", {\n      parentName: \"p\"\n    }, \"NEXT_PUBLIC_\"), \" prefix\\uB85C \\uAD6C\\uBD84\\uD558\\uB294 \\uAC83\\uACFC\\uB294 \\uB300\\uC870\\uC801\\uC774\\uB2E4.\")),\n    mdxType: \"Block\"\n  }), mdx(Block, {\n    id: \"QqtB1clAJ\",\n    content: mdx(React.Fragment, null, mdx(\"p\", null, \"\\uAE00 \\uB9C8\\uC9C0\\uB9C9\\uC5D0\\uC11C \\uC554\\uD638\\uD654/\\uBCF5\\uD638\\uD654\\uB97C \\uD55C\\uB2E4\\uACE0\\uB294 \\uD558\\uB294\\uB370... \\uD074\\uB77C\\uC774\\uC5B8\\uD2B8\\uC5D0\\uC11C cleartext\\uC5D0 \\uC811\\uADFC \\uAC00\\uB2A5\\uD55C \\uC774\\uC0C1 \\uADF8\\uC800 \\uC624\\uBC84\\uD5E4\\uB4DC \\uC544\\uB2CC\\uAC00\")),\n    mdxType: \"Block\"\n  })));\n}\n;\nMDXContent.isMDXComponent = true;","parent":{"__typename":"RoamBlock","id":"51da8f7e-611f-59d2-a75e-8fcb381b237b","string":"[[환경 변수]]는 그 특성상 Secret key 같은 민감한 자료를 다루는데, 위 구조에서는 해당 값이 런타임에 노출된다는 점을 쉽게 알기 어렵다.","fields":{"parentPage":{"title":"June 7th, 2022","fields":{"slug":"/June-7th-2022"}},"slug":"/0BYrTfVz1"}}}]},"fields":{"slug":"/e82c0"}}},"pageContext":{"id":"99c3e827-3845-557f-86c4-2b97fbac19b8"}},"staticQueryHashes":["2131059104","2221750479","2468095761"]}