{"id":9340,"date":"2026-02-28T13:44:51","date_gmt":"2026-02-28T14:44:51","guid":{"rendered":"https:\/\/hadess.io\/?p=9340"},"modified":"2026-04-06T18:30:42","modified_gmt":"2026-04-06T18:30:42","slug":"secure-coding-python","status":"publish","type":"post","link":"https:\/\/hadess.io\/secure-coding-python\/","title":{"rendered":"Secure Python: Injection Defense, Framework Security, and Dependency Auditing"},"content":{"rendered":"<h1>Secure Python: Injection Defense, Framework Security, and Dependency Auditing<\/h1>\n<blockquote>\n<p><strong>Part of the <a href=\"https:\/\/career.hadess.io\/blog\/cybersecurity-skills-guide\">Cybersecurity Skills Guide<\/a><\/strong> \u2014 This article is one deep-dive in our complete guide series.<\/p>\n<\/blockquote>\n<p><em>By HADESS Team | February 28, 2026 | Updated: February 28, 2026 | 5 min read<\/em><\/p>\n<p>Python&#8217;s readability makes it popular for web applications, automation, and data pipelines. That same readability can mask security problems \u2014 dangerous functions look harmless, and the standard library includes several footguns that developers use without thinking twice.<\/p>\n<h2>Injection Prevention<\/h2>\n<p><strong>Command injection<\/strong> through <code>os.system()<\/code> and <code>subprocess.shell=True<\/code> is the most common Python vulnerability in security assessments. Never pass user input to a shell:<\/p>\n<p>&#8220;<code>python <\/p>\n<h1>Vulnerable<\/h1>\n<p> os.system(f\"ping {user_input}\")<\/p>\n<h1>Safe<\/h1>\n<p>subprocess.run([\"ping\", \"-c\", \"1\", user_input], shell=False)<br \/>\n<\/code>`<code><\/p>\n<p>With <\/code>shell=False<code> and a list of arguments, the input is passed as a single argument to the program, not interpreted by the shell.<\/p>\n<p><strong>SQL injection<\/strong> follows the same pattern as other languages. Use parameterized queries:<\/p>\n<p><\/code>`<code>python<\/p>\n<h1>Vulnerable<\/h1>\n<p>cursor.execute(f\"SELECT * FROM users WHERE id = {user_id}\")<\/p>\n<h1>Safe<\/h1>\n<p>cursor.execute(\"SELECT * FROM users WHERE id = %s\", (user_id,))<br \/>\n<\/code>`<code><\/p>\n<p>SQLAlchemy ORM queries are parameterized by default, but <\/code>text()<code> with string formatting is not.<\/p>\n<p><strong>Template injection<\/strong> in Jinja2 allows code execution when user input is rendered as a template. Never use <\/code>Template(user_input).render()<code>. Use <\/code>render_template()<code> with variables passed separately.<\/p>\n<h2>Pickle Exploits<\/h2>\n<p><\/code>pickle.loads()<code> executes arbitrary Python code during deserialization. Never unpickle data from untrusted sources. This includes data from caches, message queues, and APIs where you do not control the sender.<\/p>\n<p><\/code>`<code>python<\/p>\n<h1>Never do this with untrusted data<\/h1>\n<p>import pickle<br \/>\ndata = pickle.loads(untrusted_bytes)  # Arbitrary code execution<br \/>\n<\/code>`<code><\/p>\n<p>Use JSON, MessagePack, or Protocol Buffers for serialization instead. If you must use pickle, implement <\/code>__reduce__<code> restrictions and use <\/code>hmac<code> to verify data integrity before deserialization \u2014 though this is still inferior to avoiding pickle entirely.<\/p>\n<h2>Django Security<\/h2>\n<p>Django ships with strong defaults, but misconfigurations undo them:<\/p>\n<ul>\n<li>Set <\/code>DEBUG = False<code> in production. Debug mode leaks settings, database queries, and full tracebacks.<\/li>\n<li>Configure <\/code>ALLOWED_HOSTS<code> explicitly. An empty list with <\/code>DEBUG = False<code> rejects all requests, but a wildcard <\/code>[&#8216;*&#8217;]<code> enables host header attacks.<\/li>\n<li>Use Django's ORM. <\/code>raw()<code> and <\/code>extra()<code> with string formatting reintroduce SQL injection.<\/li>\n<li>Enable CSRF middleware and use <\/code>{% csrf_token %}<code> in all forms.<\/li>\n<li>Set <\/code>SECURE_HSTS_SECONDS<code>, <\/code>SECURE_SSL_REDIRECT<code>, <\/code>SESSION_COOKIE_SECURE<code>, and <\/code>CSRF_COOKIE_SECURE<code> for production.<\/li>\n<\/ul>\n<h2>Flask Security<\/h2>\n<p>Flask has no security defaults. Everything is manual:<\/p>\n<p><\/code>`<code>python<br \/>\nfrom flask_talisman import Talisman<br \/>\nfrom flask_wtf.csrf import CSRFProtect<\/p>\n<p>app = Flask(__name__) Talisman(app)  # Forces HTTPS, sets security headers CSRFProtect(app)  # Enables CSRF protection app.config['SESSION_COOKIE_SECURE'] = True app.config['SESSION_COOKIE_HTTPONLY'] = True <\/code>`<code><\/p>\n<p>Flask's <\/code>secret_key<code> must be cryptographically random and stored in environment variables. A weak or hardcoded secret key allows session forgery.<\/p>\n<h2>Dependency Auditing<\/h2>\n<p>Python dependencies are a supply chain risk. Use <\/code>pip-audit<code> to check for known vulnerabilities:<\/p>\n<p><\/code>`<code>bash<br \/>\npip-audit --requirement requirements.txt<br \/>\n<\/code>`<code><\/p>\n<p>Pin all dependency versions in <\/code>requirements.txt<code> or use <\/code>poetry.lock<code>\/<\/code>pipenv.lock<code>. Review updates before applying them. Use <\/code>safety<code> as a second scanner \u2014 different tools use different vulnerability databases.<\/p>\n<p>Check for typosquatting: <\/code>requests<code> vs <\/code>request<code>, <\/code>python-dateutil<code> vs <\/code>dateutil`. Verify package names before installing.<\/p>\n<h2>Related Career Paths<\/h2>\n<p>Secure Python development maps to <a href=\"https:\/\/career.hadess.io\/career-skills\">Application Security Expert and DevSecOps roles<\/a>. Python appears in web apps, automation pipelines, and infrastructure code \u2014 all of which need security review.<\/p>\n<h2>Next Steps<\/h2>\n<ul>\n<li>Benchmark your <a href=\"https:\/\/hadess.io\/python-security-tooling\/\" title=\"Python for Security: Tooling, Automation, and Exploit Development\">Python security<\/a> skills with the <a href=\"https:\/\/career.hadess.io\/assessment\">skills assessment<\/a><\/li>\n<li>Explore related topics in the <a href=\"https:\/\/career.hadess.io\/skills\">skills library<\/a><\/li>\n<li>Build a targeted <a href=\"https:\/\/hadess.io\/cyber-study-plan-6-months\/\" title=\"Cybersecurity Study Plan: 6-Month Schedule\">study plan<\/a> with the <a href=\"https:\/\/career.hadess.io\/coach\">coaching tool<\/a><\/li>\n<\/ul>\n<p><strong>Explore all cybersecurity skills:<\/strong> <a href=\"https:\/\/hadess.io\/cybersecurity-skills-guide\/\" title=\"Cybersecurity Skills for Beginners\">Cybersecurity Skills for Beginners<\/a><\/p>\n<h2>Related Guides in This Series<\/h2>\n<ul>\n<li><a href=\"https:\/\/career.hadess.io\/blog\/skills\/web-security\/secure-coding-dotnet\">Secure Coding in .NET: Input Validation, Auth, and CSRF Defense \u2014 HADESS | 2026<\/a><\/li>\n<li><a href=\"https:\/\/career.hadess.io\/blog\/skills\/web-security\/secure-coding-java-spring\">Secure Java\/Spring Development: From Config to Defense \u2014 HADESS | 2026<\/a><\/li>\n<li><a href=\"https:\/\/career.hadess.io\/blog\/skills\/web-security\/secure-coding-javascript\">Secure JavaScript: XSS, CSP, and Dependency Safety \u2014 HADESS | 2026<\/a><\/li>\n<\/ul>\n<h2>Take the Next Step<\/h2>\n<p><strong>Browse 80+ skills on HADESS.<\/strong> Go to the <a href=\"https:\/\/career.hadess.io\/skills\">browse 80+ skills on hadess<\/a> on HADESS.<\/p>\n<p><strong>See your certification roadmap.<\/strong> Check out the <a href=\"https:\/\/career.hadess.io\/certificate-roadmap\">see your certification roadmap<\/a>.<\/p>\n<p><strong>Get started free<\/strong> \u2014 <a href=\"https:\/\/career.hadess.io\/login\">Create your HADESS account<\/a> and access all career tools.<\/p>\n<h2>Frequently Asked Questions<\/h2>\n<h3>How long does it take to learn this skill?<\/h3>\n<p>Most practitioners build working proficiency in 4-8 weeks of dedicated study with hands-on practice. Mastery takes longer and comes primarily through on-the-job experience.<\/p>\n<h3>Do I need certifications for this skill?<\/h3>\n<p>Certifications validate your knowledge to employers but are not strictly required. Hands-on experience and <a href=\"https:\/\/hadess.io\/cyber-portfolio\/\" title=\"Building Your Cybersecurity Portfolio from Scratch\">portfolio<\/a> projects often carry more weight in technical interviews. Check the <a href=\"https:\/\/career.hadess.io\/certificate-roadmap\">certification roadmap<\/a> for relevant options.<\/p>\n<h3>What career paths use this skill?<\/h3>\n<p>Explore the <a href=\"https:\/\/career.hadess.io\/career-skills\">career path explorer<\/a> to see which roles require this skill and how it fits into different cybersecurity specializations.<\/p>\n<p>&#8212;<\/p>\n<p><em>HADESS Team consists of cybersecurity practitioners, hiring managers, and career strategists who have collectively spent 50+ years in the field.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Secure Python: Injection Defense, Framework Security, and Dependency Auditing. Skills, career paths, and how to get started on the HADESS platform.<\/p>\n","protected":false},"author":1,"featured_media":9587,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[104],"tags":[88,81,92,89,91],"class_list":["post-9340","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-skills-certifications","tag-career-coaching","tag-certifications","tag-cybersecurity","tag-job-interview","tag-python"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Secure Python: Injection Defense, Framework Security, and Dependency Auditing - HADESS<\/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:\/\/hadess.io\/secure-coding-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Secure Python: Injection Defense, Framework Security, and Dependency Auditing - HADESS\" \/>\n<meta property=\"og:description\" content=\"Secure Python: Injection Defense, Framework Security, and Dependency Auditing. Skills, career paths, and how to get started on the HADESS platform.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hadess.io\/secure-coding-python\/\" \/>\n<meta property=\"og:site_name\" content=\"HADESS\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-28T14:44:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-06T18:30:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1260\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"hadess\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hadess\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/\"},\"author\":{\"name\":\"hadess\",\"@id\":\"https:\/\/hadess.io\/#\/schema\/person\/9546e2936eef03fd307e0d4b96eab4a7\"},\"headline\":\"Secure Python: Injection Defense, Framework Security, and Dependency Auditing\",\"datePublished\":\"2026-02-28T14:44:51+00:00\",\"dateModified\":\"2026-04-06T18:30:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/\"},\"wordCount\":396,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png\",\"keywords\":[\"Career Coaching\",\"Certifications\",\"Cybersecurity\",\"Job Interview\",\"Python\"],\"articleSection\":[\"Skills &amp; Certifications\"],\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/hadess.io\/secure-coding-python\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/\",\"url\":\"https:\/\/hadess.io\/secure-coding-python\/\",\"name\":\"Secure Python: Injection Defense, Framework Security, and Dependency Auditing - HADESS\",\"isPartOf\":{\"@id\":\"https:\/\/hadess.io\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png\",\"datePublished\":\"2026-02-28T14:44:51+00:00\",\"dateModified\":\"2026-04-06T18:30:42+00:00\",\"author\":{\"@id\":\"https:\/\/hadess.io\/#\/schema\/person\/9546e2936eef03fd307e0d4b96eab4a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hadess.io\/secure-coding-python\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/#primaryimage\",\"url\":\"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png\",\"contentUrl\":\"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png\",\"width\":2400,\"height\":1260},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hadess.io\/secure-coding-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hadess.io\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Skills &amp; Certifications\",\"item\":\"https:\/\/hadess.io\/category\/skills-certifications\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Secure Python: Injection Defense, Framework Security, and Dependency Auditing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hadess.io\/#website\",\"url\":\"https:\/\/hadess.io\/\",\"name\":\"HADESS\",\"description\":\"Cyber Security Knowledge Hub\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hadess.io\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/hadess.io\/#\/schema\/person\/9546e2936eef03fd307e0d4b96eab4a7\",\"name\":\"hadess\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/34bea988a8bf817b77554a8a768058aa93427b6e9e5c53a9fb4273ea554b12e5?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/34bea988a8bf817b77554a8a768058aa93427b6e9e5c53a9fb4273ea554b12e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/34bea988a8bf817b77554a8a768058aa93427b6e9e5c53a9fb4273ea554b12e5?s=96&d=mm&r=g\",\"caption\":\"hadess\"},\"sameAs\":[\"https:\/\/hadess-127191vg6c.live-website.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Secure Python: Injection Defense, Framework Security, and Dependency Auditing - HADESS","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:\/\/hadess.io\/secure-coding-python\/","og_locale":"en_US","og_type":"article","og_title":"Secure Python: Injection Defense, Framework Security, and Dependency Auditing - HADESS","og_description":"Secure Python: Injection Defense, Framework Security, and Dependency Auditing. Skills, career paths, and how to get started on the HADESS platform.","og_url":"https:\/\/hadess.io\/secure-coding-python\/","og_site_name":"HADESS","article_published_time":"2026-02-28T14:44:51+00:00","article_modified_time":"2026-04-06T18:30:42+00:00","og_image":[{"width":2400,"height":1260,"url":"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png","type":"image\/png"}],"author":"hadess","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hadess","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hadess.io\/secure-coding-python\/#article","isPartOf":{"@id":"https:\/\/hadess.io\/secure-coding-python\/"},"author":{"name":"hadess","@id":"https:\/\/hadess.io\/#\/schema\/person\/9546e2936eef03fd307e0d4b96eab4a7"},"headline":"Secure Python: Injection Defense, Framework Security, and Dependency Auditing","datePublished":"2026-02-28T14:44:51+00:00","dateModified":"2026-04-06T18:30:42+00:00","mainEntityOfPage":{"@id":"https:\/\/hadess.io\/secure-coding-python\/"},"wordCount":396,"commentCount":0,"image":{"@id":"https:\/\/hadess.io\/secure-coding-python\/#primaryimage"},"thumbnailUrl":"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png","keywords":["Career Coaching","Certifications","Cybersecurity","Job Interview","Python"],"articleSection":["Skills &amp; Certifications"],"inLanguage":"en","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hadess.io\/secure-coding-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hadess.io\/secure-coding-python\/","url":"https:\/\/hadess.io\/secure-coding-python\/","name":"Secure Python: Injection Defense, Framework Security, and Dependency Auditing - HADESS","isPartOf":{"@id":"https:\/\/hadess.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hadess.io\/secure-coding-python\/#primaryimage"},"image":{"@id":"https:\/\/hadess.io\/secure-coding-python\/#primaryimage"},"thumbnailUrl":"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png","datePublished":"2026-02-28T14:44:51+00:00","dateModified":"2026-04-06T18:30:42+00:00","author":{"@id":"https:\/\/hadess.io\/#\/schema\/person\/9546e2936eef03fd307e0d4b96eab4a7"},"breadcrumb":{"@id":"https:\/\/hadess.io\/secure-coding-python\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hadess.io\/secure-coding-python\/"]}]},{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/hadess.io\/secure-coding-python\/#primaryimage","url":"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png","contentUrl":"https:\/\/hadess.io\/wp-content\/uploads\/2026\/02\/hadess-secure-coding-python.png","width":2400,"height":1260},{"@type":"BreadcrumbList","@id":"https:\/\/hadess.io\/secure-coding-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hadess.io\/"},{"@type":"ListItem","position":2,"name":"Skills &amp; Certifications","item":"https:\/\/hadess.io\/category\/skills-certifications\/"},{"@type":"ListItem","position":3,"name":"Secure Python: Injection Defense, Framework Security, and Dependency Auditing"}]},{"@type":"WebSite","@id":"https:\/\/hadess.io\/#website","url":"https:\/\/hadess.io\/","name":"HADESS","description":"Cyber Security Knowledge Hub","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hadess.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":"Person","@id":"https:\/\/hadess.io\/#\/schema\/person\/9546e2936eef03fd307e0d4b96eab4a7","name":"hadess","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/secure.gravatar.com\/avatar\/34bea988a8bf817b77554a8a768058aa93427b6e9e5c53a9fb4273ea554b12e5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/34bea988a8bf817b77554a8a768058aa93427b6e9e5c53a9fb4273ea554b12e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/34bea988a8bf817b77554a8a768058aa93427b6e9e5c53a9fb4273ea554b12e5?s=96&d=mm&r=g","caption":"hadess"},"sameAs":["https:\/\/hadess-127191vg6c.live-website.com"]}]}},"_links":{"self":[{"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/posts\/9340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/comments?post=9340"}],"version-history":[{"count":3,"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/posts\/9340\/revisions"}],"predecessor-version":[{"id":10025,"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/posts\/9340\/revisions\/10025"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/media\/9587"}],"wp:attachment":[{"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/media?parent=9340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/categories?post=9340"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hadess.io\/wp-json\/wp\/v2\/tags?post=9340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}