{"id":16949,"date":"2021-09-03T13:07:57","date_gmt":"2021-09-03T07:37:57","guid":{"rendered":"https:\/\/www.varutra.com\/?p=16949"},"modified":"2023-03-24T10:33:21","modified_gmt":"2023-03-24T05:03:21","slug":"graphql-attack","status":"publish","type":"post","link":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/","title":{"rendered":"Intro to GraphQL \u2013 Attack Scenarios"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/varutra-1a3b6.kxcdn.com\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2-1024x535.png\"  class=\"sh-overlay-item sh-table-cell ls-is-cached lazyloaded\" data-rel=\"lightcase\" title=\"Intro to GraphQL Attack Scenarios 2 - Varutra Consulting\"><\/p>\n<h3><strong>Introduction<\/strong><\/h3>\n<p>GraphQL is one of the commonly used open-source manipulation and data query language for APIs, and runtime for implementing queries for preexisting data. It also serves as an efficient alternative to traditional REST API queries. This open-source language is not associated with a specific backend, which means that it interacts with existing code and data. The client interacts with the GraphQL service, which then interacts with the database via query resolvers during execution.<\/p>\n<p>It enforces a strict typing system, and data is described in a well-defined GraphQL schema. It enables clients to craft a GraphQL query and get what they need. Their schemas can be massive, and from a hacker\u2019s perspective, this presents new challenges. The foundational knowledge of the GraphQL schema and proper tools for automation is necessary to plan an attack.<\/p>\n<h3><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-16956 aligncenter\" src=\"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/tmp_1630653997687.png\" alt=\"Intro to GraphQL Attack Scenarios\" width=\"1138\" height=\"685\" srcset=\"https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/tmp_1630653997687.png 1138w, https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/tmp_1630653997687-300x181.png 300w, https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/tmp_1630653997687-1024x616.png 1024w, https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/tmp_1630653997687-768x462.png 768w\" sizes=\"(max-width: 1138px) 100vw, 1138px\" \/><\/h3>\n<p style=\"text-align: center\">ImageSource: <a href=\"https:\/\/devopedia.org\/graphql\">https:\/\/devopedia.org\/graphql<\/a><\/p>\n<h3><strong>GraphQL Terminology<\/strong><\/h3>\n<ul>\n<li>Query: A read-only operation to fetch data from a GraphQL service.<\/li>\n<li>Mutation: GraphQL data manipulation via mutation, in addition to its most common use case of fetching data.<\/li>\n<li>Field: The basic unit of data that can be fetched. It is all about the selection of fields on objects.<\/li>\n<li>Argument: Every field and nested object can have an argument, enabling the client to filter the results.<\/li>\n<li>Alias: Aliases are used for avoiding the naming conflicts in the results. For example, the client may start a query of the same object with different arguments and retrieve the results in different aliases.<\/li>\n<li>Fragment: Fragments are those sets of queries that can be reutilized across multiple queries.<\/li>\n<li>Variables: Variables can be used in queries or mutations to create objects with dynamic arguments.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-16955 aligncenter\" src=\"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/GraphQL-Terminology.png\" alt=\"GraphQL Terminology\" width=\"571\" height=\"215\" srcset=\"https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/GraphQL-Terminology.png 571w, https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/GraphQL-Terminology-300x113.png 300w\" sizes=\"(max-width: 571px) 100vw, 571px\" \/><\/p>\n<p>The above image contains a query operation on the object \u2018paste\u2019. The object takes an argument \u2018pId\u2019, which is a string, and a variable \u2018$pId\u2019. It is also defined to make this argument dynamic.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Finding GraphQL endpoints<\/strong><\/h3>\n<p>Some common examples for GraphQL endpoints are listed below.<\/p>\n<ul>\n<li>\/graphql\/<\/li>\n<li>\/graphql\/console<\/li>\n<li>\/graphiql<\/li>\n<li>\/gql<\/li>\n<\/ul>\n<p>Browse SecLists some popular graphql wordlist.<\/p>\n<p>Check for parameters that resemble GraphQL query structure, then locate hidden endpoints by looking out for keywords in the HTML source of your web application or files such as, \u201cquery \u201c, \u201cmutation \u201c, \u201cgraphql\u201d.<\/p>\n<p>However, the endpoints do not have to follow any specific naming convention. Applications in the wild are known to host their GraphQL service on a separate domain e.g.,graphql.example.com.<\/p>\n<h3><\/h3>\n<h3><strong>Introspection<\/strong><\/h3>\n<p>After identifying a GraphQL endpoint, the first step would be an introspection query. Most GraphQL instances have introspection enabled by default.<\/p>\n<p>An introspection query is used to probe a GraphQL service for information about the types, queries, mutations &amp; fragments of the available GraphQL schema. This feature allows anyone to see the layout of the entire schema. If the introspection is documented by the developers, then it can be accessed by the GraphQL endpoint via its interactive console (usually <em>\/graphiql<\/em>).<\/p>\n<p>A comprehensive request to perform GraphQL introspection(if enabled) is shown in the following image:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-16954 aligncenter\" src=\"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/GraphQL-introspection.png\" alt=\"GraphQL introspection\" width=\"571\" height=\"189\" srcset=\"https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/GraphQL-introspection.png 571w, https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/GraphQL-introspection-300x99.png 300w\" sizes=\"(max-width: 571px) 100vw, 571px\" \/><\/p>\n<p>Visit Payloads All The Things to learn more information on the URL encoded &amp; URL decoded variants of the GraphQL introspection query. Tools like GraphQL Raider and InQLare used to gather information about queries and mutations.<\/p>\n<h3><\/h3>\n<h3><strong>Common <\/strong><strong>GraphQL <\/strong><strong>Attack Scenarios<\/strong><\/h3>\n<p>We will be looking at a couple of attacks that consist of scenarios specific to the GraphQL implementation like Batched Queries and DoS from Nested Queries. However, classic attacks like SQL injections, Rate Limiting, and Improper Authorization also affect GraphQL implementations.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Batched Queries Attack<\/strong><\/p>\n<p>GraphQL supports query batching. It enables the client to batch multiple queries or collect the request for multiple object instances through a single GraphQL API call.<\/p>\n<p>This feature of grouping can be abused to create a form of brute force attack. As the client can query the same object multiple times with different arguments in a single API call, this attack is not as easily detectable as the usual brute force attack. This is because normally brute-force attacks utilize a massive number of requests. Here is an example of query batching:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-16952 aligncenter\" src=\"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/GraphQL-Batched-Queries-Attack.png\" alt=\"GraphQL Batched Queries Attack\" width=\"571\" height=\"196\" srcset=\"https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/GraphQL-Batched-Queries-Attack.png 571w, https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/GraphQL-Batched-Queries-Attack-300x103.png 300w\" sizes=\"(max-width: 571px) 100vw, 571px\" \/><\/p>\n<p>In this example, the \u2018systemDiagnostics\u2019 operation (or object) is being queried multiple times with different values passed in the arguments for individual queries. This attack will likely bypass any existing rate limits in the application and will assist the attacker significantly in enumerating a large number of objects. To mitigate this type of attack, it is recommended to prevent batching for sensitive objects and implement object request rate-limiting in code.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Denial of Service<\/strong><\/p>\n<p>In GraphQL, query depth limitation is disabled by default, hence nested queries of massive depth can be executed to cause a denial-of-service attack on the GraphQL service. Because of the nature of the GraphQL query language, multiple queries can be nested one inside the other (refer to the image).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-16953 aligncenter\" src=\"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/GraphQL-Denial-of-Service.png\" alt=\"GraphQL Attack Denial of Service\" width=\"561\" height=\"244\" srcset=\"https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/GraphQL-Denial-of-Service.png 561w, https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/GraphQL-Denial-of-Service-300x130.png 300w\" sizes=\"(max-width: 561px) 100vw, 561px\" \/><\/p>\n<p>In GraphQL, when object types reference each other, it is often possible to build a circular query that grows exponentially to a point it could bring the server down due to resource exhaustion. In the example shown above, the application offers two object types, namely Owner and Paste, which reference each other (an owner has a paste, and a paste has an owner), permitting a recursive query to be carried out successfully.<\/p>\n<p>Setting a max_depth for queries can help mitigate this type of attack. The max_depth functionality is the maximum level of depth allowed for a query, ensuring deeply constructed queries will not be accepted by GraphQL.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>References and further reading<\/strong><\/h3>\n<p>If you would like to delve deeper into this topic, here are some recommended resources:<\/p>\n<ol>\n<li>https:\/\/blog.yeswehack.com\/yeswerhackers\/how-exploit-graphql-endpoint-bug-bounty\/ &#8211; A beginner-friendly blog with some interesting information about introspection and authorization issues in GraphQL.<\/li>\n<li><a href=\"https:\/\/jondow.eu\/practical-graphql-attack-vectors\/%20\">https:\/\/jondow.eu\/practical-graphql-attack-vectors\/<\/a>&#8211; A brief write-up detailing info about various GraphQL attack vectors.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>Author,<\/p>\n<p><strong>Akshay Khilari<\/strong><\/p>\n<p>Attack &amp; PenTest Team<\/p>\n<p>Varutra Consulting Pvt. Ltd.<\/p>","protected":false},"excerpt":{"rendered":"<p>Introduction GraphQL is one of the commonly used open-source manipulation and data query language for APIs, and runtime for implementing queries for preexisting data. It&#8230;<\/p>\n","protected":false},"author":4,"featured_media":16961,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[264,285,272],"tags":[495,499,497,498,494,496],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 4.6.3 - aioseo.com -->\n\t\t<meta name=\"description\" content=\"GraphQL is a query language used for APIs. Let&#039;s check what is GraphQL and common attack scenarios - Batched Queries Attack &amp; Denial of Service attack.\" \/>\n\t\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t\t<link rel=\"canonical\" href=\"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 4.6.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Varutra Consulting\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Intro to GraphQL language for APIs and Attack Scenarios\" \/>\n\t\t<meta property=\"og:description\" content=\"GraphQL is a query language used for APIs. Let&#039;s check what is GraphQL and common attack scenarios - Batched Queries Attack &amp; Denial of Service attack.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t\t<meta property=\"article:section\" content=\"Web Application Security\" \/>\n\t\t<meta property=\"article:tag\" content=\"api\" \/>\n\t\t<meta property=\"article:tag\" content=\"application security\" \/>\n\t\t<meta property=\"article:tag\" content=\"attack scenerios\" \/>\n\t\t<meta property=\"article:tag\" content=\"batched queries attack\" \/>\n\t\t<meta property=\"article:tag\" content=\"graphql\" \/>\n\t\t<meta property=\"article:tag\" content=\"rest api\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-09-03T07:37:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-03-24T05:03:21+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Intro to GraphQL language for APIs and Attack Scenarios\" \/>\n\t\t<meta name=\"twitter:description\" content=\"GraphQL is a query language used for APIs. Let&#039;s check what is GraphQL and common attack scenarios - Batched Queries Attack &amp; Denial of Service attack.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2.png\" \/>\n\t\t<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t\t<meta name=\"twitter:data1\" content=\"kalpblogger\" \/>\n\t\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#article\",\"name\":\"Intro to GraphQL language for APIs and Attack Scenarios\",\"headline\":\"Intro to GraphQL \\u2013 Attack Scenarios\",\"author\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/author\\\/kalpblogger\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Intro-to-GraphQL-Attack-Scenarios-2.png\",\"width\":1200,\"height\":627,\"caption\":\"Intro to GraphQL Attack Scenarios\"},\"datePublished\":\"2021-09-03T13:07:57+05:30\",\"dateModified\":\"2023-03-24T10:33:21+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#webpage\"},\"articleSection\":\"Mobile Application Security, Secure SDLC, Web Application Security, API, Application Security, Attack Scenerios, Batched Queries Attack, GraphQL, Rest API\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/\",\"nextItem\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#listItem\"},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#listItem\",\"position\":2,\"name\":\"Intro to GraphQL \\u2013 Attack Scenarios\",\"previousItem\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/#listItem\"}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/#organization\",\"name\":\"Varutra\",\"url\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.varutra.com\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Varutra-Found-e1612984024606.jpg\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#organizationLogo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/author\\\/kalpblogger\\\/#author\",\"url\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/author\\\/kalpblogger\\\/\",\"name\":\"kalpblogger\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5e96a9b330da7c941c1e39217a2fbe38?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"kalpblogger\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#webpage\",\"url\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/\",\"name\":\"Intro to GraphQL language for APIs and Attack Scenarios\",\"description\":\"GraphQL is a query language used for APIs. Let's check what is GraphQL and common attack scenarios - Batched Queries Attack & Denial of Service attack.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/author\\\/kalpblogger\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/author\\\/kalpblogger\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Intro-to-GraphQL-Attack-Scenarios-2.png\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#mainImage\",\"width\":1200,\"height\":627,\"caption\":\"Intro to GraphQL Attack Scenarios\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/graphql-attack\\\/#mainImage\"},\"datePublished\":\"2021-09-03T13:07:57+05:30\",\"dateModified\":\"2023-03-24T10:33:21+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/#website\",\"url\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/\",\"name\":\"Varutra Consulting\",\"description\":\"Secure your digital world with our Cybersecurity services.\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.varutra.com\\\/varutravrt3\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>Intro to GraphQL language for APIs and Attack Scenarios<\/title>\n\n","aioseo_head_json":{"title":"Intro to GraphQL language for APIs and Attack Scenarios","description":"GraphQL is a query language used for APIs. Let's check what is GraphQL and common attack scenarios - Batched Queries Attack & Denial of Service attack.","canonical_url":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"og:locale":"en_US","og:site_name":"Varutra Consulting","og:type":"article","og:title":"Intro to GraphQL language for APIs and Attack Scenarios","og:description":"GraphQL is a query language used for APIs. Let's check what is GraphQL and common attack scenarios - Batched Queries Attack &amp; Denial of Service attack.","og:url":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/","og:image":"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2.png","og:image:secure_url":"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2.png","og:image:width":"1200","og:image:height":"627","article:section":"Web Application Security","article:tag":["api","application security","attack scenerios","batched queries attack","graphql","rest api"],"article:published_time":"2021-09-03T07:37:57+00:00","article:modified_time":"2023-03-24T05:03:21+00:00","twitter:card":"summary_large_image","twitter:title":"Intro to GraphQL language for APIs and Attack Scenarios","twitter:description":"GraphQL is a query language used for APIs. Let's check what is GraphQL and common attack scenarios - Batched Queries Attack &amp; Denial of Service attack.","twitter:image":"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2.png","twitter:label1":"Written by","twitter:data1":"kalpblogger","twitter:label2":"Est. reading time","twitter:data2":"5 minutes","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#article","name":"Intro to GraphQL language for APIs and Attack Scenarios","headline":"Intro to GraphQL \u2013 Attack Scenarios","author":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/author\/kalpblogger\/#author"},"publisher":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2.png","width":1200,"height":627,"caption":"Intro to GraphQL Attack Scenarios"},"datePublished":"2021-09-03T13:07:57+05:30","dateModified":"2023-03-24T10:33:21+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#webpage"},"isPartOf":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#webpage"},"articleSection":"Mobile Application Security, Secure SDLC, Web Application Security, API, Application Security, Attack Scenerios, Batched Queries Attack, GraphQL, Rest API"},{"@type":"BreadcrumbList","@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.varutra.com\/varutravrt3\/#listItem","position":1,"name":"Home","item":"https:\/\/www.varutra.com\/varutravrt3\/","nextItem":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#listItem"},{"@type":"ListItem","@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#listItem","position":2,"name":"Intro to GraphQL \u2013 Attack Scenarios","previousItem":"https:\/\/www.varutra.com\/varutravrt3\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/www.varutra.com\/varutravrt3\/#organization","name":"Varutra","url":"https:\/\/www.varutra.com\/varutravrt3\/","logo":{"@type":"ImageObject","url":"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/11\/Varutra-Found-e1612984024606.jpg","@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#organizationLogo"},"image":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/www.varutra.com\/varutravrt3\/author\/kalpblogger\/#author","url":"https:\/\/www.varutra.com\/varutravrt3\/author\/kalpblogger\/","name":"kalpblogger","image":{"@type":"ImageObject","@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/5e96a9b330da7c941c1e39217a2fbe38?s=96&d=mm&r=g","width":96,"height":96,"caption":"kalpblogger"}},{"@type":"WebPage","@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#webpage","url":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/","name":"Intro to GraphQL language for APIs and Attack Scenarios","description":"GraphQL is a query language used for APIs. Let's check what is GraphQL and common attack scenarios - Batched Queries Attack & Denial of Service attack.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/#website"},"breadcrumb":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#breadcrumblist"},"author":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/author\/kalpblogger\/#author"},"creator":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/author\/kalpblogger\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.varutra.com\/varutravrt3\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2.png","@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#mainImage","width":1200,"height":627,"caption":"Intro to GraphQL Attack Scenarios"},"primaryImageOfPage":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/#mainImage"},"datePublished":"2021-09-03T13:07:57+05:30","dateModified":"2023-03-24T10:33:21+05:30"},{"@type":"WebSite","@id":"https:\/\/www.varutra.com\/varutravrt3\/#website","url":"https:\/\/www.varutra.com\/varutravrt3\/","name":"Varutra Consulting","description":"Secure your digital world with our Cybersecurity services.","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.varutra.com\/varutravrt3\/#organization"}}]}},"aioseo_meta_data":{"post_id":"16949","title":"Intro to GraphQL language for APIs and Attack Scenarios","description":"GraphQL is a query language used for APIs. Let's check what is GraphQL and common attack scenarios - Batched Queries Attack &amp; Denial of Service attack.","keywords":[],"keyphrases":"{\"focus\":{\"keyphrase\":\"GraphQL\",\"analysis\":{\"keyphraseInTitle\":{\"score\":9,\"maxScore\":9,\"error\":0},\"keyphraseInDescription\":{\"score\":9,\"maxScore\":9,\"error\":0},\"keyphraseLength\":{\"score\":9,\"maxScore\":9,\"error\":0,\"length\":1},\"keyphraseInURL\":{\"score\":5,\"maxScore\":5,\"error\":0},\"keyphraseInIntroduction\":{\"score\":9,\"maxScore\":9,\"error\":0},\"keyphraseInSubHeadings\":{\"score\":9,\"maxScore\":9,\"error\":0},\"keyphraseInImageAlt\":{\"score\":9,\"maxScore\":9,\"error\":0}},\"score\":100},\"additional\":[{\"keyphrase\":\"attack\",\"score\":83,\"analysis\":{\"keyphraseInDescription\":{\"score\":9,\"maxScore\":9,\"error\":0},\"keyphraseLength\":{\"score\":9,\"maxScore\":9,\"error\":0,\"length\":1},\"keyphraseInIntroduction\":{\"score\":3,\"maxScore\":9,\"error\":1},\"keyphraseInImageAlt\":{\"score\":9,\"maxScore\":9,\"error\":0}}}]}","primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"featured","og_image_url":"https:\/\/www.varutra.com\/wp-content\/uploads\/2021\/09\/Intro-to-GraphQL-Attack-Scenarios-2.png","og_image_width":"1200","og_image_height":"627","og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":"Web Application Security","og_article_tags":[],"twitter_use_og":true,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"open_ai":null,"created":"2021-10-27 15:10:59","updated":"2023-03-24 05:05:40"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/www.varutra.com\/varutravrt3\" title=\"Home\">Home<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/www.varutra.com\/varutravrt3\/category\/mobile-application-security\/\" title=\"Mobile Application Security\">Mobile Application Security<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\tIntro to GraphQL \u2013 Attack Scenarios\n<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.varutra.com\/varutravrt3"},{"label":"Mobile Application Security","link":"https:\/\/www.varutra.com\/varutravrt3\/category\/mobile-application-security\/"},{"label":"Intro to GraphQL \u2013 Attack Scenarios","link":"https:\/\/www.varutra.com\/varutravrt3\/graphql-attack\/"}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/posts\/16949"}],"collection":[{"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/comments?post=16949"}],"version-history":[{"count":5,"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/posts\/16949\/revisions"}],"predecessor-version":[{"id":21195,"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/posts\/16949\/revisions\/21195"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/media\/16961"}],"wp:attachment":[{"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/media?parent=16949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/categories?post=16949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.varutra.com\/varutravrt3\/wp-json\/wp\/v2\/tags?post=16949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}