[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page--\u002Fblog\u002Farticle":3,"d2f3b98a-eb5e-4096-8e79-21a62358df4b":59,"da6dfaaa-71b1-4e6b-b16e-5b5acfb472f7":190,"blog-detail":199,"bc5d6217-b80c-499b-91a7-1dbca7208203":978,"cc183043-092c-426d-9587-4fc6db361342":1011,"317e8e2a-912c-49a3-98d2-832985198aa9":1069,"d455843b-a9b6-427f-b7e5-b64fe751b50d":1073,"cde563a8-ddf2-4083-8be6-2d7fe4e82167":1838,"a080278f-f5c2-4d0e-ba3f-677da008dae4":1876,"related-blogs":1895},{"id":4,"name":5,"seo":6,"status":8,"schema":9,"template":10,"sections":47,"redirect":58},"289e4d80-4fe0-4497-8225-40d2b6d0fd37","Article ",{"title":7},"Article","published",[],{"name":11,"start_sections":12,"end_sections":18},"Default",[13],{"collection":14,"id":15,"item":16},"section_harsh",1,{"id":17},"d455843b-a9b6-427f-b7e5-b64fe751b50d",[19,24,29,33,38,43],{"collection":20,"id":21,"item":22},"section_pinky",32,{"id":23},"da6dfaaa-71b1-4e6b-b16e-5b5acfb472f7",{"collection":25,"id":26,"item":27},"section_janak",30,{"id":28},"d2f3b98a-eb5e-4096-8e79-21a62358df4b",{"collection":25,"id":30,"item":31},31,{"id":32},"cc183043-092c-426d-9587-4fc6db361342",{"collection":34,"id":35,"item":36},"section_hem",2,{"id":37},"bc5d6217-b80c-499b-91a7-1dbca7208203",{"collection":39,"id":40,"item":41},"section_dhruv",3,{"id":42},"cde563a8-ddf2-4083-8be6-2d7fe4e82167",{"collection":44,"id":15,"item":45},"section_bhavin",{"id":46},"a080278f-f5c2-4d0e-ba3f-677da008dae4",[48,53],{"collection":49,"id":50,"item":51},"section_bhargav",5576,{"id":52},"1b3ea167-b557-47ad-996c-6eeb0bcf3c08",{"collection":54,"id":55,"item":56},"section_krusha",5606,{"id":57},"317e8e2a-912c-49a3-98d2-832985198aa9",[],{"title":60,"links":61},"\u003Cp>Services\u003C\u002Fp>",[62,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185],{"link":63},{"type":64,"label":65,"url":66,"anchor_id":66,"target":67,"description":66,"page":68,"icon":66,"section":66},"page","Custom Applications",null,"_self",{"path":69},"\u002Fcustom-software-development",{"link":71},{"type":64,"label":72,"url":66,"anchor_id":66,"target":67,"description":66,"page":73,"icon":66,"section":66},"Enterprise Solutions",{"path":74},"\u002Fenterprise-application-solutions",{"link":76},{"type":64,"label":77,"url":66,"anchor_id":66,"target":67,"description":66,"page":78,"icon":66,"section":66},"eCommerce & Digital Storefronts",{"path":79},"\u002Fecommerce-development",{"link":81},{"type":64,"label":82,"url":66,"anchor_id":66,"target":67,"description":66,"page":83,"icon":66,"section":66},"No-Code\u002FLow-Code Solutions",{"path":84},"\u002Flow-code-no-code-development",{"link":86},{"type":64,"label":87,"url":66,"anchor_id":66,"target":67,"description":66,"page":88,"icon":66,"section":66},"Custom Web Development",{"path":89},"\u002Fcustom-web-development",{"link":91},{"type":64,"label":92,"url":66,"anchor_id":66,"target":67,"description":66,"page":93,"icon":66,"section":66},"SaaS",{"path":94},"\u002Fsaas-product-development",{"link":96},{"type":64,"label":97,"url":66,"anchor_id":66,"target":67,"description":66,"page":98,"icon":66,"section":66},"Cloud & DevOps",{"path":99},"\u002Fcloud-devops-engineering",{"link":101},{"type":64,"label":102,"url":66,"anchor_id":66,"target":67,"description":66,"page":103,"icon":66,"section":66},"Mobile App Development",{"path":104},"\u002Fmobile-application-development",{"link":106},{"type":64,"label":107,"url":66,"anchor_id":66,"target":67,"description":66,"page":108,"icon":66,"section":66},"CMS Development",{"path":109},"\u002Fcms-development",{"link":111},{"type":64,"label":112,"url":66,"anchor_id":66,"target":67,"description":66,"page":113,"icon":66,"section":66},"Performance Marketing Services",{"path":114},"\u002Fperformance-marketing-services",{"link":116},{"type":64,"label":117,"url":66,"anchor_id":66,"target":67,"description":66,"page":118,"icon":66,"section":66},"eCommerce Growth Solutions",{"path":119},"\u002Fecommerce-growth-solutions",{"link":121},{"type":64,"label":122,"url":66,"anchor_id":66,"target":67,"description":66,"page":123,"icon":66,"section":66},"UX Optimization & Accessibility",{"path":124},"\u002Fui-ux-design",{"link":126},{"type":64,"label":127,"url":66,"anchor_id":66,"target":67,"description":66,"page":128,"icon":66,"section":66},"IT Strategy & Process Optimization",{"path":129},"\u002Fit-optimization",{"link":131},{"type":64,"label":132,"url":66,"anchor_id":66,"target":67,"description":66,"page":133,"icon":66,"section":66},"Application Maintenance & Support",{"path":134},"\u002Fapplication-maintenance",{"link":136},{"type":64,"label":137,"url":66,"anchor_id":66,"target":67,"description":66,"page":138,"icon":66,"section":66},"IT Staff Augmentation Services",{"path":139},"\u002Fit-staff-augmentation-services",{"link":141},{"type":64,"label":142,"url":66,"anchor_id":66,"target":67,"description":66,"page":143,"icon":66,"section":66},"B2B Lead Generation Solutions",{"path":144},"\u002Flead-generation-services",{"link":146},{"type":64,"label":147,"url":66,"anchor_id":66,"target":67,"description":66,"page":148,"icon":66,"section":66},"Business Intelligence & Data Analytics",{"path":149},"\u002Fbusiness-intelligence-and-data-analytics",{"link":151},{"type":64,"label":152,"url":66,"anchor_id":66,"target":67,"description":66,"page":153,"icon":66,"section":66},"Legacy App Modernizations",{"path":154},"\u002Flegacy-app-modernization",{"link":156},{"type":64,"label":157,"url":66,"anchor_id":66,"target":67,"description":66,"page":158,"icon":66,"section":66},"AI & Advanced Tech Solutions",{"path":159},"\u002Fai-and-emerging-technologies",{"link":161},{"type":64,"label":162,"url":66,"anchor_id":66,"target":67,"description":66,"page":163,"icon":66,"section":66},"Cloud & Infrastructure Transformation",{"path":164},"\u002Fcloud-infrastructure-modernization",{"link":166},{"type":64,"label":167,"url":66,"anchor_id":66,"target":67,"description":66,"page":168,"icon":66,"section":66},"IoT & Smart Solutions",{"path":169},"\u002Fiot-development-smart-integration",{"link":171},{"type":64,"label":172,"url":66,"anchor_id":66,"target":67,"description":66,"page":173,"icon":66,"section":66},"Product Consulting",{"path":174},"\u002Fproduct-strategy-and-management",{"link":176},{"type":64,"label":177,"url":66,"anchor_id":66,"target":67,"description":66,"page":178,"icon":66,"section":66},"Tech Consulting",{"path":179},"\u002Ftechnology-consulting",{"link":181},{"type":64,"label":182,"url":66,"anchor_id":66,"target":67,"description":66,"page":183,"icon":66,"section":66},"Design Consulting",{"path":184},"\u002Fux-consulting",{"link":186},{"type":64,"label":187,"url":66,"anchor_id":66,"target":67,"description":66,"page":188,"icon":66,"section":66},"Digital Marketing Consulting",{"path":189},"\u002Fdigital-marketing-consulting",{"title":191,"icon":192},"\u003Cp>Engineering clarity where others add complexity.&nbsp;We help businesses build, modernize, and scale with the right technology. Whatever your challenge, stage, or vision, we make IT possible.\u003C\u002Fp>",{"name":193,"value":66,"svg":194},"Making IT Possible | Black Font",{"id":195,"width":66,"height":66,"title":196,"type":197,"filename_disk":198},"ef48a6de-e34e-400b-8de4-c5d5c1b5ff5f","Group","image\u002Fsvg+xml","ef48a6de-e34e-400b-8de4-c5d5c1b5ff5f.svg",{"data":200},[201],{"id":202,"title":203,"date_published":204,"summary":205,"seo_description":206,"update_date":66,"tags":207,"cover":218,"sections":221,"author":954,"category":66,"og_image":965,"color_primary":966},"1bf565ec-98ba-4b60-8860-34bccded0906","Permanently Blocking IP Addresses with AWS WAF Rate-Based Rule Limit","2024-09-10","Prevent DDoS attacks and permanently block attacker IP addresses with AWS WAF’s rate-based rule limits.","Learn to Permanently Block IP Addresses with AWS WAF Rate-Based Rules. Effective strategies for IP management and security using AWS WAF capabilities.",[208,213],{"bg_tags_id":209},{"label":210,"slug":211,"id":212},"Tech","tech","54acf55e-56ab-4481-ad9b-746a78f5b13b",{"bg_tags_id":214},{"label":215,"slug":216,"id":217},"Developer Insights","developer-insights","9b9bbc1a-a554-431f-bfab-d421484a8695",{"id":219,"filename_disk":220},"bf542d70-5a5e-41a5-916a-600f2effdae5","bf542d70-5a5e-41a5-916a-600f2effdae5.jpg",[222],{"collection":223,"item":224},"bg_sections_content_blocks",{"id":225,"name":203,"content":226,"metadata":948},"2b546e06-f5c3-44ca-abce-139ccaed4643",{"time":227,"blocks":228,"version":947},1729770776110,[229,236,250,256,263,269,275,281,287,293,299,307,313,319,325,349,356,362,368,376,384,390,396,402,410,416,422,430,438,444,450,458,464,474,482,495,504,511,519,525,531,537,543,549,555,561,567,583,589,595,601,608,614,624,632,638,654,662,668,676,682,688,694,701,709,715,728,736,748,756,763,771,777,785,791,797,803,810,815,822,826,833,837,843,851,857,863,869,875,883,889,895,901,907,913,919,925,931,937],{"id":230,"data":231,"type":232,"tunes":233},"VIo6UznSba",{"text":203,"level":15},"header",{"alignment":234},{"alignment":235},"left",{"id":237,"data":238,"type":249},"SXzzNuT-oE",{"file":239,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":240,"size":241,"title":242,"width":243,"fileId":244,"height":245,"extension":246},"blocking-ip-addresses-with-aws-waf.jpg",373505,"Blocking IP Addresses With Aws Waf",1980,"df43a435-5811-43f2-aab9-a6dd8baff7e7",1600,"jpg","",false,"image",{"id":251,"data":252,"type":232,"tunes":254},"6cSJPfqrZj",{"text":253,"level":35},"What is WAF?",{"alignment":255},{"alignment":235},{"id":257,"data":258,"type":260,"tunes":261},"016mGej_U5",{"text":259},"AWS WAF is a web application firewall that lets you control access to your content based on the criteria that you specify. In simpler words, it protects your web applications from threats and provides you the ability to control the access of traffic that is visiting your site.","paragraph",{"alignment":262},{"alignment":235},{"id":264,"data":265,"type":260,"tunes":267},"JCMRc2WgIL",{"text":266},"\u003Cb>\u003Ci>What is this blog about?\u003C\u002Fi>\u003C\u002Fb>",{"alignment":268},{"alignment":235},{"id":270,"data":271,"type":260,"tunes":273},"s4ZQ8K5nmg",{"text":272},"AWS WAF provides multiple ways to manage access to the traffic coming to your web application. One of the most important things we can do with this is to stop DDoS (Distributed Denial-of-Service).",{"alignment":274},{"alignment":235},{"id":276,"data":277,"type":260,"tunes":279},"1sqQWniZYl",{"text":278},"Rate-based rule that counts incoming requests and rate limit requests when they are coming too fast. We can tweak the rules according to our requirements and prevent DDoS attacks on our server.&nbsp;",{"alignment":280},{"alignment":235},{"id":282,"data":283,"type":260,"tunes":285},"DERE_kVkT5",{"text":284},"But there are some limitations to it. In this blog, we are going to see what the limitations are and how we can surpass these limitations.",{"alignment":286},{"alignment":235},{"id":288,"data":289,"type":232,"tunes":291},"NoAFsENZZd",{"text":290,"level":35},"WAF and Other Resource Pricing",{"alignment":292},{"alignment":235},{"id":294,"data":295,"type":260,"tunes":297},"8r9iJXW8z8",{"text":296},"WAF is not a free service, and there is no free tier for that. But if you are learning, then testing is very cheap. During my testing period, it cost me around \u003Cb>$0.18\u003C\u002Fb>. For permanent setups, refer to the official documents from AWS.",{"alignment":298},{"alignment":235},{"id":300,"data":301,"type":249},"QYO_uSueMK",{"file":302,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":303,"size":304,"title":305,"width":243,"fileId":306,"height":245,"extension":246},"WAF Pricing.jpg",206938,"Waf Pricing","edc4a814-ae14-48f7-b486-a412af7d3319",{"id":308,"data":309,"type":260,"tunes":311},"SBR_0pjZZD",{"text":310},"\u003Cb>A few things need to be noted down first:\u003C\u002Fb>",{"alignment":312},{"alignment":235},{"id":314,"data":315,"type":260,"tunes":317},"fOLkf5QzMd",{"text":316},"AWS WAF can only be used with CloudFront Distributions and Regional Resources.",{"alignment":318},{"alignment":235},{"id":320,"data":321,"type":260,"tunes":323},"WYtOZGnHMt",{"text":322},"Regional Resources:",{"alignment":324},{"alignment":235},{"id":326,"data":327,"type":348},"7h3AnxGe8e",{"items":328,"style":347},[329,332,335,338,341,344],{"items":330,"content":331},[],"Amazon API Gateway REST API",{"items":333,"content":334},[],"Application Load Balancer",{"items":336,"content":337},[],"AWS AppSync GraphQL API",{"items":339,"content":340},[],"Amazon Cognito user pool",{"items":342,"content":343},[],"AWS App Runner service",{"items":345,"content":346},[],"AWS Verified Access instance","unordered","nestedlist",{"id":350,"data":351,"type":348},"T9Srzklnx9",{"items":352,"style":347},[353],{"items":354,"content":355},[],"PS: Here I am implementing this whole thing for the application load balancer.",{"id":357,"data":358,"type":232,"tunes":360},"nApeGZ3__0",{"text":359,"level":35},"Creating Web ACL and Rules",{"alignment":361},{"alignment":235},{"id":363,"data":364,"type":260,"tunes":366},"Y-BnRMwl8V",{"text":365},"In this section, we will create a Web ACL with a rule that blocks IPs that exceed the defined rate limit.",{"alignment":367},{"alignment":235},{"id":369,"data":370,"type":348},"X3yl7qaBP1",{"items":371,"style":375},[372],{"items":373,"content":374},[],"Go to AWS WAF → Web ACLs → Select the region in which your load balancer or regional resource → Create Web ACL.","ordered",{"id":377,"data":378,"type":249},"gVoIzooPYp",{"file":379,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":380,"size":381,"title":382,"width":243,"fileId":383,"height":245,"extension":246},"Creating Web ACL and Rules.jpg",422260,"Creating Web Acl and Rules","e8a1ae36-4506-4d67-8535-9ff394f5cfad",{"id":385,"data":386,"type":260,"tunes":388},"ot62XA4pmS",{"text":387},"2. Select resource type: (for me)&nbsp;",{"alignment":389},{"alignment":235},{"id":391,"data":392,"type":260,"tunes":394},"5c9U8otPTJ",{"text":393},"Regional resources, Region: Asia Pacific (Mumbai),&nbsp;",{"alignment":395},{"alignment":235},{"id":397,"data":398,"type":260,"tunes":400},"JDNYQu_0kX",{"text":399},"Name: xxxx",{"alignment":401},{"alignment":235},{"id":403,"data":404,"type":249},"dQcZQAtfRe",{"file":405,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":406,"size":407,"title":408,"width":243,"fileId":409,"height":245,"extension":246},"Creating Web ACL and Rules 2.jpg",619932,"Creating Web Acl and Rules 2","c17e3d7d-3d17-4297-befc-a95c341ead72",{"id":411,"data":412,"type":260,"tunes":414},"pARZ_IweUd",{"text":413},"3. Add application load balancer:&nbsp;",{"alignment":415},{"alignment":235},{"id":417,"data":418,"type":260,"tunes":420},"VURoiiCrDG",{"text":419},"Add Resources → Application Load Balancer → Select alb.",{"alignment":421},{"alignment":235},{"id":423,"data":424,"type":249},"SbfB4YJ_M8",{"file":425,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":426,"size":427,"title":428,"width":243,"fileId":429,"height":245,"extension":246},"Associated AWS resources.jpg",245390,"Associated Aws Resources","6f6db728-1ac1-40bb-bbc4-b7193df0ee8d",{"id":431,"data":432,"type":249},"9A1WwhfVdW",{"file":433,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":434,"size":435,"title":436,"width":243,"fileId":437,"height":245,"extension":246},"Add AWS resources.jpg",417399,"Add Aws Resources","8d93aad3-bdee-4ea8-babe-ee038cf242d6",{"id":439,"data":440,"type":260,"tunes":442},"rf6Q_DX0W6",{"text":441},"4. Add Rate-base Rules:&nbsp;",{"alignment":443},{"alignment":235},{"id":445,"data":446,"type":260,"tunes":448},"2a35zLw_VN",{"text":447},"Add rules → Add my own rules and rule groups.",{"alignment":449},{"alignment":235},{"id":451,"data":452,"type":249},"ixWQeeF8N8",{"file":453,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":454,"size":455,"title":456,"width":243,"fileId":457,"height":245,"extension":246},"Add rules.jpg",381443,"Add Rules","7cafe6a7-b6a2-44b2-90a0-4562f82a5cc0",{"id":459,"data":460,"type":260,"tunes":462},"4sIDX5O9oz",{"text":461},"5. Rule Set-Up that blocks IPs based on specified rate limit:",{"alignment":463},{"alignment":235},{"id":465,"data":466,"type":348},"FNIBo9Zo-T",{"items":467,"style":347},[468,471],{"items":469,"content":470},[],"Rule type: Rule builder",{"items":472,"content":473},[],"Type: Rate-based rule",{"id":475,"data":476,"type":249},"a81SfadpL2",{"file":477,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":478,"size":479,"title":480,"width":243,"fileId":481,"height":245,"extension":246},"Rule Type.jpg",559529,"Rule Type","2c53eaba-4601-4826-add9-af80a3e12327",{"id":483,"data":484,"type":348},"0VdLc5PKYl",{"items":485,"style":347},[486,489,492],{"items":487,"content":488},[],"Rate Limit: 100 (You can specify according to your traffic)",{"items":490,"content":491},[],"Evaluation window: 1 minute (This means if someone makes more than 100 requests in 1 minute, then their IP will be blocked)",{"items":493,"content":494},[],"Request aggregation: IP address in header (Why this option? Let’s discuss it later in this blog)",{"id":496,"data":497,"type":249},"dZgu18ajjP",{"file":498,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":499,"size":500,"title":501,"width":502,"fileId":503,"height":245,"extension":246},"rate Limiting criteria.jpg",689047,"Rate Limiting Criteria",2020,"58c6c6a8-e6fb-4389-90c9-8bb32a36502c",{"id":505,"data":506,"type":348},"bkdQXvPWfP",{"items":507,"style":347},[508],{"items":509,"content":510},[],"Header field name: X-Forwarded-For",{"id":512,"data":513,"type":249},"9wRmrW8iLx",{"file":514,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":515,"size":516,"title":517,"width":243,"fileId":518,"height":245,"extension":246},"Header field name X-Forwarded-For.jpg",696378,"Header Field Name X Forwarded For","77729eb2-56ec-4a0b-bed4-76145830d8de",{"id":520,"data":521,"type":260,"tunes":523},"vzo6uyDu_c",{"text":522},"6. Create Rule → Set rule Priority → Enable Sampled request.",{"alignment":524},{"alignment":235},{"id":526,"data":527,"type":260,"tunes":529},"fKTODu0OM8",{"text":528},"Here we have created Web ACL with a rule that blocks IP addresses if they exceed the rate limit of 100 requests per minute.&nbsp;",{"alignment":530},{"alignment":235},{"id":532,"data":533,"type":260,"tunes":535},"o7O8kTKdTF",{"text":534},"Are we done??? Nope!",{"alignment":536},{"alignment":235},{"id":538,"data":539,"type":260,"tunes":541},"pPLHODnPUb",{"text":540},"\u003Cb>\u003Ci>Problem With This Rate-base Rule\u003C\u002Fi>\u003C\u002Fb>",{"alignment":542},{"alignment":235},{"id":544,"data":545,"type":260,"tunes":547},"GAWGaR9Hdu",{"text":546},"We don't know exactly why, but this rate-base rule blocks IP addresses very well, but for a few minutes only. After a few minutes, it releases blocked IPs, and the attacker is again able to attack our server.",{"alignment":548},{"alignment":235},{"id":550,"data":551,"type":260,"tunes":553},"P2D-ODDSFl",{"text":552},"\u003Cb>\u003Ci>Solution?\u003C\u002Fi>\u003C\u002Fb>",{"alignment":554},{"alignment":235},{"id":556,"data":557,"type":260,"tunes":559},"F6GCV4WHlH",{"text":558},"Get help from Lambda Functions. And there is another service from AWS WAF called IP sets. IP sets are a set of IP addresses stored in the IP set. We can utilize these IP sets to create new Web ACL rules that allow or block IPs from these IP sets.",{"alignment":560},{"alignment":235},{"id":562,"data":563,"type":260,"tunes":565},"ERLO1w_sqc",{"text":564},"Here’s what we are going to do:",{"alignment":566},{"alignment":235},{"id":568,"data":569,"type":348},"sF6CaYq1wU",{"items":570,"style":347},[571,574,577,580],{"items":572,"content":573},[],"Create an IP set that contains IP addresses of attackers.",{"items":575,"content":576},[],"Create a rule in Web ACL that blocks IP addresses from attackers IP set.",{"items":578,"content":579},[],"Create Lambda Function that reads the list of Blocked IPs by Rate-Base Rule, and add those IPs to the attacker's IP set.",{"items":581,"content":582},[],"Create one Eventbridge Rule that triggers lambda functions every minute. So, we can keep the attackers IP set list updated with newly blocked IPs.",{"id":584,"data":585,"type":260,"tunes":587},"ChanongZsC",{"text":586},"Too many hectic tasks? Don’t worry, CloudFormation has your back. I have created a CloudFormation template that will create an IP set, Lambda Function, IAM roles and permissions and Eventbridge Rule.",{"alignment":588},{"alignment":235},{"id":590,"data":591,"type":232,"tunes":593},"SDQZF_1O4Z",{"text":592,"level":35},"Creating Lambda, IP set, IAM role and Eventbridge rule",{"alignment":594},{"alignment":235},{"id":596,"data":597,"type":260,"tunes":599},"1kLZEHGE6h",{"text":598},"Using the CloudFormation template we will create an IP set, Lambda Function, IAM roles and permissions and Eventbridge Rule.",{"alignment":600},{"alignment":235},{"id":602,"data":603,"type":348},"zOxuBleTC_",{"items":604,"style":375},[605],{"items":606,"content":607},[],"You can find the CloudFormation template here.",{"id":609,"data":610,"type":260,"tunes":612},"TMXvekI2FJ",{"text":611},"→ \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnishant-p-7span\u002FWAF-Permenent-IP-Blocking.git\">CloudFormation Template\u003C\u002Fa>",{"alignment":613},{"alignment":235},{"id":615,"data":616,"type":348},"lEMkrMbi8c",{"items":617,"style":375},[618,621],{"items":619,"content":620},[],"Go to CloudFormation → Stacks → Create Stack → With New Resources (Standard).",{"items":622,"content":623},[],"Prepare template: Choose an existing template. Template source: Upload a template file. (I've stored the template in S3, so you can use the S3 URL but you can directly upload a .YAML file.",{"id":625,"data":626,"type":249},"nLInN5KdL5",{"file":627,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":628,"size":629,"title":630,"width":243,"fileId":631,"height":245,"extension":246},"Create Stack.jpg",541861,"Create Stack","f0074f0d-bdea-46b1-9991-a03f49afdf4c",{"id":633,"data":634,"type":260,"tunes":636},"8loIb2QZbl",{"text":635},"4. Give name to the stack and fill the following Parameters.",{"alignment":637},{"alignment":235},{"id":639,"data":640,"type":348},"3UyJM6sUnQ",{"items":641,"style":347},[642,645,648,651],{"items":643,"content":644},[],"RateBasedRuleName: Name of our Rate-base- rule created in Web ACL.",{"items":646,"content":647},[],"Scope: REGIONAL ( I am using ALB so it is a regional resource.)",{"items":649,"content":650},[],"WebACLId: It can be found at Web ALC dashboard (AWS WAF → Web ACLs)",{"items":652,"content":653},[],"WebACLName: Name of Web ACL.",{"id":655,"data":656,"type":249},"q_gbm2_8dB",{"file":657,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":658,"size":659,"title":660,"width":243,"fileId":661,"height":245,"extension":246},"Provide a Stack name image.jpg",359362,"Provide a Stack Name Image","5a789457-be96-481a-9a40-97e7616d9c44",{"id":663,"data":664,"type":260,"tunes":666},"5Cdsq96FMp",{"text":665},"5. Keep everything else default, and at the end Select the checkbox of “I acknowledge that AWS CloudFormation might create IAM resources” and Submit.",{"alignment":667},{"alignment":235},{"id":669,"data":670,"type":249},"-Gsr8Ku1GV",{"file":671,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":672,"size":673,"title":674,"width":243,"fileId":675,"height":245,"extension":246},"AWS IAM Role.jpg",340269,"Aws Iam Role","d7526a2a-e9c2-454f-9256-eb6fbbf23454",{"id":677,"data":678,"type":260,"tunes":680},"6higJ2ZcsE",{"text":679},"Now \u003Cb>IP set, Lambda function, IAM roles, and Eventbridge\u003C\u002Fb> Rule will be created by CloudFormation. We have to create Rule that blocks IPs from creating IP sets.",{"alignment":681},{"alignment":235},{"id":683,"data":684,"type":232,"tunes":686},"5TFmuuKhVO",{"text":685,"level":35},"Create IP Set Blocking Rule",{"alignment":687},{"alignment":235},{"id":689,"data":690,"type":260,"tunes":692},"X5eOZsApdW",{"text":691},"We are going to create a new Web ACL rule that blocks IP addresses from the IP set created by CloudFormation.",{"alignment":693},{"alignment":235},{"id":695,"data":696,"type":348},"-daja-W5Aw",{"items":697,"style":375},[698],{"items":699,"content":700},[],"Go to AWS WAF → Web ACLs → your Web ACL → Rules → Add my own rules.",{"id":702,"data":703,"type":249},"-jF-sY5Zra",{"file":704,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":705,"size":706,"title":707,"width":243,"fileId":708,"height":245,"extension":246},"Testing rate limiter.jpg",294804,"Testing Rate Limiter","f45a0a7c-3bd1-4a6d-ba92-680fe01602c9",{"id":710,"data":711,"type":260,"tunes":713},"vn3j7NV2e-",{"text":712},"2. Block request from the IPs of attackers IP set.",{"alignment":714},{"alignment":235},{"id":716,"data":717,"type":348},"KnCFWMibSW",{"items":718,"style":347},[719,722,725],{"items":720,"content":721},[],"Rule type: IP set",{"items":723,"content":724},[],"Name: xxxxx",{"items":726,"content":727},[],"IP set: Select IP set created by CloudFormation.",{"id":729,"data":730,"type":249},"ZBhL9yATGh",{"file":731,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":732,"size":733,"title":734,"width":243,"fileId":735,"height":245,"extension":246},"Rule Type IP set.jpg",402727,"Rule Type IP Set","8c6c6d4a-022c-4df0-9860-895779e58184",{"id":737,"data":738,"type":348},"42PYw9ig_f",{"items":739,"style":347},[740,743,745],{"items":741,"content":742},[],"IP address to use as the originating address: IP address in header",{"items":744,"content":510},[],{"items":746,"content":747},[],"Position inside header: Any IP addresses",{"id":749,"data":750,"type":249},"3kyUNsULdl",{"file":751,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":752,"size":753,"title":754,"width":243,"fileId":755,"height":245,"extension":246},"IP address to use as the og adress.jpg",692935,"IP Address to Use as the Og Adress","ce230a20-c629-4e16-b9a9-e0445e7a691a",{"id":757,"data":758,"type":348},"PTBv_Q5BVj",{"items":759,"style":347},[760],{"items":761,"content":762},[],"Action: Block",{"id":764,"data":765,"type":249},"Xe5cC3yNLh",{"file":766,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":767,"size":768,"title":769,"width":243,"fileId":770,"height":245,"extension":246},"Action Block.jpg",231074,"Action Block","ad86e819-fe10-4de2-8d3e-b00ca876359a",{"id":772,"data":773,"type":260,"tunes":775},"1Vu6ntRz90",{"text":774},"3. Set priority of rule: select this rule and move this rule to the top.",{"alignment":776},{"alignment":235},{"id":778,"data":779,"type":249},"AUVReL4oQ4",{"file":780,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":781,"size":782,"title":783,"width":243,"fileId":784,"height":245,"extension":246},"Set Rule priority.jpg",291303,"Set Rule Priority","2fe7b8f1-2abd-4b80-85b7-354f118000e7",{"id":786,"data":787,"type":260,"tunes":789},"i1MwhFFcba",{"text":788},"We are done with our implementation. Now, it's time for testing.",{"alignment":790},{"alignment":235},{"id":792,"data":793,"type":232,"tunes":795},"4lTwES-AZr",{"text":794,"level":35},"Testing",{"alignment":796},{"alignment":235},{"id":798,"data":799,"type":260,"tunes":801},"8WnvlpSLDx",{"text":800},"I am using ApacheBench to send 200 requests in a minute to my server. I have created one EC2 instance running on Ubuntu and am going to use it for testing, you can install this on your local machine as well.",{"alignment":802},{"alignment":235},{"id":804,"data":805,"type":348},"0v-5KryIkw",{"items":806,"style":347},[807],{"items":808,"content":809},[],"Install ApacheBench on Ubuntu.",{"id":811,"data":812,"type":814},"t_cgeIqlii",{"code":813},"sudo apt-get update\n\nsudo apt-get install apache2-utils","code",{"id":816,"data":817,"type":348},"aHQoIM9XD_",{"items":818,"style":347},[819],{"items":820,"content":821},[],"Creating a shell script that sends 200 requests per minute to the domain (in other words, to the server)",{"id":823,"data":824,"type":814},"8iF3MDLu88",{"code":825},"#!\u002Fbin\u002Fbash\n\nfor i in {1..20}\n\ndo\n\n ab -n 10 -c 1 -H \"X-Forwarded-For: 1.2.3.4\" http:\u002F\u002Fyour-server-endpoint\u002F\n\n sleep 3\n\ndone",{"id":827,"data":828,"type":348},"Yh8TeYa9gI",{"items":829,"style":347},[830],{"items":831,"content":832},[],"To run a script, run the following commands:",{"id":834,"data":835,"type":814},"ENn0Dy3Tdr",{"code":836},"chmod +x test.sh\n\n.\u002Ftest.sh",{"id":838,"data":839,"type":260,"tunes":841},"78sZI3lx-J",{"text":840},"Now check the IP set list (AWS WAF → IP sets → …) There you can find this 1.2.3.4\u002F32 IP, which means everything is working properly. (Maybe the list won’t get updated immediately as lambda triggers every 1 minute.).",{"alignment":842},{"alignment":235},{"id":844,"data":845,"type":249},"dmt-b8D_rM",{"file":846,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":847,"size":848,"title":849,"width":243,"fileId":850,"height":245,"extension":246},"Add IP Addresses.jpg",257030,"Add IP Addresses","bf6d7127-87e5-4d8f-9bd2-7e4c79c071f5",{"id":852,"data":853,"type":232,"tunes":855},"FaxHAzucWX",{"text":854,"level":35},"Why Are We Using ‘X-Forwarded-For’?",{"alignment":856},{"alignment":235},{"id":858,"data":859,"type":260,"tunes":861},"VojkWFQvbX",{"text":860},"For a moment, assume that you are a DDoS attacker. What are the things that need to be taken care of when you are DDoSing? \u003Cb>Your IP address\u003C\u002Fb>. As an attacker, your IP address is a very important thing that you don’t want to reveal to the victim or anyone else.&nbsp;",{"alignment":862},{"alignment":235},{"id":864,"data":865,"type":260,"tunes":867},"_f0KjhqT4J",{"text":866},"So, to hide their IP attacker, use \u003Cb>HTTP proxies\u003C\u002Fb> (Zombies) to attack the web server. HTTP proxies will send requests to the webserver on behalf of attackers.&nbsp;",{"alignment":868},{"alignment":235},{"id":870,"data":871,"type":260,"tunes":873},"sg-6lc0trm",{"text":872},"HTTP proxies are hard to find as they may be situated \u003Cb>at any random geolocation and their IPs keep changing\u003C\u002Fb>. The diagram below is a very simple representation of DDoS attacks.",{"alignment":874},{"alignment":235},{"id":876,"data":877,"type":249},"7csI3Nu1o0",{"file":878,"caption":247,"stretched":248,"withBorder":248,"withBackground":248},{"name":879,"size":880,"title":881,"width":243,"fileId":882,"height":245,"extension":246},"DDoS attacks using HTTP Proxies.jpg",421174,"D Do S Attacks Using HTTP Proxies","d5b6e4ad-a936-480a-b9de-9b00b33d6256",{"id":884,"data":885,"type":260,"tunes":887},"HygJ8grs0R",{"text":886},"DDoS Attacks Using HTTP Proxies",{"alignment":888},{"alignment":235},{"id":890,"data":891,"type":260,"tunes":893},"Orln83a5Lq",{"text":892},"In this case, blocking \u003Cb>source IP addresses\u003C\u002Fb> is not helpful at all, as source IP addresses are constantly changing and attackers are still able to attack your server easily from another HTTP proxy.",{"alignment":894},{"alignment":235},{"id":896,"data":897,"type":260,"tunes":899},"UWodSddjgG",{"text":898},"\u003Cb>Is it impossible to stop DDoS attacks?\u003C\u002Fb>",{"alignment":900},{"alignment":235},{"id":902,"data":903,"type":260,"tunes":905},"HtWkNul4x9",{"text":904},"Nope, as per the research, no clear pattern could be found as IPs were keep changing and from entirely different locations across the planet, but one thing was clearly visible after inspecting HTTP requests: they all had headers that indicated that they were being forwarded from HTTP proxies: \u003Cb>‘X-Forwarded-For’.\u003C\u002Fb>",{"alignment":906},{"alignment":235},{"id":908,"data":909,"type":260,"tunes":911},"ofSTGglfy8",{"text":910},"Identifying Client IP from X-Forwarded-For Header",{"alignment":912},{"alignment":235},{"id":914,"data":915,"type":260,"tunes":917},"pKZK3scOAI",{"text":916},"Any requests that are coming from HTTP proxies or load balancers have this common header \u003Cb>‘X-Forwarded-For’,\u003C\u002Fb> which contains the \u003Cb>originating client IP.&nbsp;\u003C\u002Fb>",{"alignment":918},{"alignment":235},{"id":920,"data":921,"type":260,"tunes":923},"CJqJCkStSK",{"text":922},"The meaning of this header is that the request is being sent on behalf of the \u003Cb>originating IP.\u003C\u002Fb> This header is only present if the request is coming from HTTP proxies or a load balancer.",{"alignment":924},{"alignment":235},{"id":926,"data":927,"type":260,"tunes":929},"NLJZFt6wWf",{"text":928},"This header is non-standard, there is no guarantee you’ll get it, and the way it is handled can differ depending on the proxy implementation. You also have no guarantee that it will contain a proper IP.",{"alignment":930},{"alignment":235},{"id":932,"data":933,"type":260,"tunes":935},"ed1lv8kx-L",{"text":934},"Advantages of using ‘X-Forwarded-For’:",{"alignment":936},{"alignment":235},{"id":938,"data":939,"type":348},"MrerNOQGBV",{"items":940,"style":347},[941,944],{"items":942,"content":943},[],"If you use the Source IP address to block requests, then there is a high chance that your regular user might get blocked if they exceed the limit, while the attacker will still be able to increase the load of your server by using proxies.",{"items":945,"content":946},[],"The ‘X-Forwarded-For’ header is only present in requests that are coming from HTTP proxies or load balancers, making it easier to differentiate between regular users and users with bad intentions.","2.28.2",{"title":949,"id":950,"component":951},"Editor Renderer","b20b790f-9bf7-4fe4-a500-220d9752c67a",{"name":952,"id":953},"sections-blog-editor","8f082246-494c-41a1-b796-da33c0cc1e2e",{"first_name":955,"last_name":956,"id":957,"email":958,"facebook_url":66,"description":959,"x_url":66,"linkedin_url":960,"instagram_url":66,"title":66,"slug":961,"avatar":962},"Pruthvi","Menpara","b646db4a-2d4b-4f49-845f-882dcd595783","pruthvi@7span.com","Pruthvi is a cloud computing architect who makes sure businesses scale and perform at their best using AWS and Azure. He’s passionate about building robust cloud infrastructures that provide the perfect balance of security and scalability.","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fpruthvi-menpara\u002F","pruthvi-menpara",{"id":963,"filename_disk":964},"f9603713-3590-4777-b48b-b1db51d75a67","f9603713-3590-4777-b48b-b1db51d75a67.jpg",{"id":219,"filename_disk":220},{"name":967,"_100":968,"_200":969,"_300":970,"_400":971,"_500":972,"_700":973,"_600":974,"_900":975,"_800":976,"id":977,"status":8},"Tailwind Violet","#EDE9FE","#DDD6FE","#C4B5FD","#A78BFA","#8B5CF6","#6D28D9","#7C3AED","#4C1D95","#5B21B6","8e348daa-4323-43cf-9146-f4052552bd8c",{"address":979,"contact":996},[980,989],{"hem_addresse":981},{"country":982,"address":983,"contact_number":984},"India (HQ)","\u003Cp>201, iSquare Corporate Park, Ahmedabad-380060, Gujarat, India\u003C\u002Fp>",{"type":985,"label":986,"url":987,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"url","+91 77 97 977 977","tel:+917797977977","_blank",{"hem_addresse":990},{"country":991,"address":992,"contact_number":993},"Canada","\u003Cp>24 Merlot Court, Timberlea, NS B3T 0C2, Canada\u003C\u002Fp>",{"type":985,"label":994,"url":995,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"+1 902-333-0067","tel:+19023330067",[997,1003],{"hem_contact":998},{"label":999,"contact_value":1000,"link":1001},"\u003Cp>For Sales\u003C\u002Fp>","YO@7SPAN.COM",{"type":985,"label":1000,"url":1002,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"mailto:YO@7SPAN.COM?subject=Inquiry",{"hem_contact":1004},{"label":1005,"contact_value":1006,"link":1007},"\u003Cp>Looking For Jobs\u003C\u002Fp>","Apply Now",{"type":64,"label":1008,"url":66,"anchor_id":66,"target":66,"description":66,"page":1009,"icon":66,"section":66},"Career",{"path":1010},"\u002Fcareers",{"title":1012,"links":1013},"\u003Cp>Industries\u003C\u002Fp>",[1014,1019,1024,1029,1034,1039,1044,1049,1054,1059,1064],{"link":1015},{"type":64,"label":1016,"url":66,"anchor_id":66,"target":66,"description":66,"page":1017,"icon":66,"section":66},"Manufacturing",{"path":1018},"\u002Findustry\u002Fmanufacturing",{"link":1020},{"type":64,"label":1021,"url":66,"anchor_id":66,"target":67,"description":66,"page":1022,"icon":66,"section":66},"Real Estate & Construction",{"path":1023},"\u002Findustry\u002Freal-estate",{"link":1025},{"type":64,"label":1026,"url":66,"anchor_id":66,"target":67,"description":66,"page":1027,"icon":66,"section":66},"Mobility & Automotive",{"path":1028},"\u002Findustry\u002Fautomotive",{"link":1030},{"type":64,"label":1031,"url":66,"anchor_id":66,"target":67,"description":66,"page":1032,"icon":66,"section":66},"Healthcare & Wellness",{"path":1033},"\u002Findustry\u002Fhealthcare",{"link":1035},{"type":64,"label":1036,"url":66,"anchor_id":66,"target":66,"description":66,"page":1037,"icon":66,"section":66},"Travel & Hospitality",{"path":1038},"\u002Findustry\u002Ftravel-hospitality",{"link":1040},{"type":64,"label":1041,"url":66,"anchor_id":66,"target":67,"description":66,"page":1042,"icon":66,"section":66},"B2B SaaS",{"path":1043},"\u002Findustry\u002Fsaas",{"link":1045},{"type":64,"label":1046,"url":66,"anchor_id":66,"target":67,"description":66,"page":1047,"icon":66,"section":66},"Telecommunications",{"path":1048},"\u002Findustry\u002Ftelecommunications",{"link":1050},{"type":64,"label":1051,"url":66,"anchor_id":66,"target":67,"description":66,"page":1052,"icon":66,"section":66},"Banking & Finance",{"path":1053},"\u002Findustry\u002Fbanking-finance",{"link":1055},{"type":64,"label":1056,"url":66,"anchor_id":66,"target":67,"description":66,"page":1057,"icon":66,"section":66},"Ecommerce & Retail",{"path":1058},"\u002Findustry\u002Fretail-ecommerce",{"link":1060},{"type":64,"label":1061,"url":66,"anchor_id":66,"target":67,"description":66,"page":1062,"icon":66,"section":66},"Media & Entertainment",{"path":1063},"\u002Findustry\u002Fmedia-entertainment",{"link":1065},{"type":64,"label":1066,"url":66,"anchor_id":66,"target":67,"description":66,"page":1067,"icon":66,"section":66},"Government & Public Sector",{"path":1068},"\u002Findustry\u002Fgovernment-and-public-service",{"id":57,"title":1070,"subtitle":1071,"blogs":1072,"selected_blogs":66},"\u003Cdiv>\n\u003Cdiv>More\u003C\u002Fdiv>\n\u003C\u002Fdiv>","\u003Cp>An interesting read? Here is more related to it.\u003C\u002Fp>","related",{"logo":1074,"logo_link":1078,"button_primary":1082,"nav_links":1087},{"id":1075,"width":66,"height":66,"title":1076,"type":197,"filename_disk":1077},"be082e99-8711-4293-b716-4b3da8c6dd29","Logo Dark","be082e99-8711-4293-b716-4b3da8c6dd29.svg",{"type":64,"label":1079,"url":66,"anchor_id":66,"target":66,"description":66,"page":1080,"icon":66,"section":66},"Home",{"path":1081},"\u002F",{"type":64,"label":1083,"url":66,"anchor_id":1084,"target":988,"description":66,"page":1085,"icon":66,"section":66},"Get In Touch","contact_form",{"path":1086},"\u002Fcontact",[1088,1527,1533,1801,1807],{"link":1089},{"type":66,"label":1090,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":66,"section":66,"links":1091},"Solutions",[1092,1218,1282],{"children":1093},{"type":64,"label":1094,"url":66,"anchor_id":66,"target":67,"description":66,"page":1095,"icon":66,"section":66,"links":1097},"Services",{"path":1096},"\u002Fservices",[1098,1137,1172,1195],{"children":1099},{"type":64,"label":1100,"url":66,"anchor_id":66,"target":67,"description":66,"page":1101,"icon":1103,"section":66,"links":1109},"Build",{"path":1102},"\u002Fbuild",{"name":1104,"value":66,"svg":1105},"Advanced Manufacturing & Industrial Products",{"id":1106,"width":66,"height":66,"title":1107,"type":197,"filename_disk":1108},"0461b3d3-f165-4a6b-bcd8-a8f4a63120ef","Mega Menu (1)","0461b3d3-f165-4a6b-bcd8-a8f4a63120ef.svg",[1110,1113,1116,1119,1122,1125,1128,1131,1134],{"children":1111},{"type":64,"label":65,"url":66,"anchor_id":66,"target":67,"description":66,"page":1112,"icon":66,"section":66},{"path":69},{"children":1114},{"type":64,"label":72,"url":66,"anchor_id":66,"target":67,"description":66,"page":1115,"icon":66,"section":66},{"path":74},{"children":1117},{"type":64,"label":77,"url":66,"anchor_id":66,"target":67,"description":66,"page":1118,"icon":66,"section":66},{"path":79},{"children":1120},{"type":64,"label":82,"url":66,"anchor_id":66,"target":67,"description":66,"page":1121,"icon":66,"section":66},{"path":84},{"children":1123},{"type":64,"label":87,"url":66,"anchor_id":66,"target":67,"description":66,"page":1124,"icon":66,"section":66},{"path":89},{"children":1126},{"type":64,"label":92,"url":66,"anchor_id":66,"target":67,"description":66,"page":1127,"icon":66,"section":66},{"path":94},{"children":1129},{"type":64,"label":97,"url":66,"anchor_id":66,"target":67,"description":66,"page":1130,"icon":66,"section":66},{"path":99},{"children":1132},{"type":64,"label":102,"url":66,"anchor_id":66,"target":67,"description":66,"page":1133,"icon":66,"section":66},{"path":104},{"children":1135},{"type":64,"label":107,"url":66,"anchor_id":66,"target":67,"description":66,"page":1136,"icon":66,"section":66},{"path":109},{"children":1138},{"type":64,"label":1139,"url":66,"anchor_id":66,"target":67,"description":66,"page":1140,"icon":1142,"section":66,"links":1147},"Grow",{"path":1141},"\u002Fgrow",{"name":1143,"value":1143,"svg":1144},"Dawnrise",{"id":1145,"width":66,"height":66,"title":1143,"type":197,"filename_disk":1146},"ba95220f-833d-4ca4-8a11-2a4b67cd134e","ba95220f-833d-4ca4-8a11-2a4b67cd134e.svg",[1148,1151,1154,1157,1160,1163,1166,1169],{"children":1149},{"type":64,"label":112,"url":66,"anchor_id":66,"target":67,"description":66,"page":1150,"icon":66,"section":66},{"path":114},{"children":1152},{"type":64,"label":117,"url":66,"anchor_id":66,"target":67,"description":66,"page":1153,"icon":66,"section":66},{"path":119},{"children":1155},{"type":64,"label":122,"url":66,"anchor_id":66,"target":67,"description":66,"page":1156,"icon":66,"section":66},{"path":124},{"children":1158},{"type":64,"label":127,"url":66,"anchor_id":66,"target":67,"description":66,"page":1159,"icon":66,"section":66},{"path":129},{"children":1161},{"type":64,"label":132,"url":66,"anchor_id":66,"target":67,"description":66,"page":1162,"icon":66,"section":66},{"path":134},{"children":1164},{"type":64,"label":137,"url":66,"anchor_id":66,"target":67,"description":66,"page":1165,"icon":66,"section":66},{"path":139},{"children":1167},{"type":64,"label":142,"url":66,"anchor_id":66,"target":67,"description":66,"page":1168,"icon":66,"section":66},{"path":144},{"children":1170},{"type":64,"label":147,"url":66,"anchor_id":66,"target":67,"description":66,"page":1171,"icon":66,"section":66},{"path":149},{"children":1173},{"type":64,"label":1174,"url":66,"anchor_id":66,"target":67,"description":66,"page":1175,"icon":1177,"section":66,"links":1182},"Transform",{"path":1176},"\u002Ftransform",{"name":1178,"value":1178,"svg":1179},"Ember Nest",{"id":1180,"width":66,"height":66,"title":1178,"type":197,"filename_disk":1181},"317591fd-6bf7-4888-a695-78ecdf2507af","317591fd-6bf7-4888-a695-78ecdf2507af.svg",[1183,1186,1189,1192],{"children":1184},{"type":64,"label":152,"url":66,"anchor_id":66,"target":67,"description":66,"page":1185,"icon":66,"section":66},{"path":154},{"children":1187},{"type":64,"label":157,"url":66,"anchor_id":66,"target":67,"description":66,"page":1188,"icon":66,"section":66},{"path":159},{"children":1190},{"type":64,"label":162,"url":66,"anchor_id":66,"target":67,"description":66,"page":1191,"icon":66,"section":66},{"path":164},{"children":1193},{"type":64,"label":167,"url":66,"anchor_id":66,"target":67,"description":66,"page":1194,"icon":66,"section":66},{"path":169},{"children":1196},{"type":64,"label":1197,"url":66,"anchor_id":66,"target":67,"description":66,"page":1198,"icon":1200,"section":66,"links":1205},"Consulting",{"path":1199},"\u002Fconsulting",{"name":1201,"value":1201,"svg":1202},"Twinflame",{"id":1203,"width":66,"height":66,"title":1201,"type":197,"filename_disk":1204},"5c461564-acb7-4926-b30f-1ef56efb28f5","5c461564-acb7-4926-b30f-1ef56efb28f5.svg",[1206,1209,1212,1215],{"children":1207},{"type":64,"label":172,"url":66,"anchor_id":66,"target":67,"description":66,"page":1208,"icon":66,"section":66},{"path":174},{"children":1210},{"type":64,"label":177,"url":66,"anchor_id":66,"target":67,"description":66,"page":1211,"icon":66,"section":66},{"path":179},{"children":1213},{"type":64,"label":182,"url":66,"anchor_id":66,"target":67,"description":66,"page":1214,"icon":66,"section":66},{"path":184},{"children":1216},{"type":64,"label":187,"url":66,"anchor_id":66,"target":67,"description":66,"page":1217,"icon":66,"section":66},{"path":189},{"children":1219},{"type":66,"label":1220,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":66,"section":66,"links":1221},"Industries",[1222,1243,1264],{"children":1223},{"type":66,"label":1224,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1225,"section":66,"links":1230},"Industrial, Mobility & Infrastructure",{"name":1226,"value":1226,"svg":1227},"Mountain Base",{"id":1228,"width":66,"height":66,"title":1226,"type":197,"filename_disk":1229},"a04fdc40-8ddb-4caa-ad48-0cf2f30953e9","a04fdc40-8ddb-4caa-ad48-0cf2f30953e9.svg",[1231,1234,1237,1240],{"children":1232},{"type":64,"label":1016,"url":66,"anchor_id":66,"target":66,"description":66,"page":1233,"icon":66,"section":66},{"path":1018},{"children":1235},{"type":64,"label":1021,"url":66,"anchor_id":66,"target":67,"description":66,"page":1236,"icon":66,"section":66},{"path":1023},{"children":1238},{"type":64,"label":1026,"url":66,"anchor_id":66,"target":67,"description":66,"page":1239,"icon":66,"section":66},{"path":1028},{"children":1241},{"type":64,"label":1036,"url":66,"anchor_id":66,"target":66,"description":66,"page":1242,"icon":66,"section":66},{"path":1038},{"children":1244},{"type":66,"label":1245,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1246,"section":66,"links":1251},"Digital, Consumer & Media",{"name":1247,"value":1247,"svg":1248},"Orchard",{"id":1249,"width":66,"height":66,"title":1247,"type":197,"filename_disk":1250},"c21bf7e5-fb29-406c-9d42-0883c6272235","c21bf7e5-fb29-406c-9d42-0883c6272235.svg",[1252,1255,1258,1261],{"children":1253},{"type":64,"label":1056,"url":66,"anchor_id":66,"target":66,"description":66,"page":1254,"icon":66,"section":66},{"path":1058},{"children":1256},{"type":64,"label":1041,"url":66,"anchor_id":66,"target":66,"description":66,"page":1257,"icon":66,"section":66},{"path":1043},{"children":1259},{"type":64,"label":1046,"url":66,"anchor_id":66,"target":66,"description":66,"page":1260,"icon":66,"section":66},{"path":1048},{"children":1262},{"type":64,"label":1061,"url":66,"anchor_id":66,"target":66,"description":66,"page":1263,"icon":66,"section":66},{"path":1063},{"children":1265},{"type":66,"label":1266,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1267,"section":66,"links":1272},"Regulated & Public Services",{"name":1268,"value":1268,"svg":1269},"Crystal",{"id":1270,"width":66,"height":66,"title":1268,"type":197,"filename_disk":1271},"276f1af8-f2fa-4229-94e7-d5ce165aa4c0","276f1af8-f2fa-4229-94e7-d5ce165aa4c0.svg",[1273,1276,1279],{"children":1274},{"type":64,"label":1051,"url":66,"anchor_id":66,"target":66,"description":66,"page":1275,"icon":66,"section":66},{"path":1053},{"children":1277},{"type":64,"label":1066,"url":66,"anchor_id":66,"target":66,"description":66,"page":1278,"icon":66,"section":66},{"path":1068},{"children":1280},{"type":64,"label":1031,"url":66,"anchor_id":66,"target":66,"description":66,"page":1281,"icon":66,"section":66},{"path":1033},{"children":1283},{"type":64,"label":1284,"url":66,"anchor_id":66,"target":67,"description":66,"page":1285,"icon":66,"section":66,"links":1287},"Hire Talent",{"path":1286},"\u002Ftechnologies",[1288,1327,1371,1412,1456,1475,1489,1513],{"children":1289},{"type":66,"label":1290,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1291,"section":66,"links":1296},"Frontend",{"name":1292,"value":1292,"svg":1293},"Eclipse",{"id":1294,"width":66,"height":66,"title":1292,"type":197,"filename_disk":1295},"f24547ab-e85f-4d6f-894d-a375479c842e","f24547ab-e85f-4d6f-894d-a375479c842e.svg",[1297,1302,1307,1312,1317,1322],{"children":1298},{"type":64,"label":1299,"url":66,"anchor_id":66,"target":67,"description":66,"page":1300,"icon":66,"section":66},"JavaScript Developers",{"path":1301},"\u002Fhire-javascript-developers",{"children":1303},{"type":64,"label":1304,"url":66,"anchor_id":66,"target":67,"description":66,"page":1305,"icon":66,"section":66},"TypeScript Developers",{"path":1306},"\u002Fhire-typescript-developers",{"children":1308},{"type":64,"label":1309,"url":66,"anchor_id":66,"target":67,"description":66,"page":1310,"icon":66,"section":66},"React Developers",{"path":1311},"\u002Fhire-react-developers",{"children":1313},{"type":64,"label":1314,"url":66,"anchor_id":66,"target":67,"description":66,"page":1315,"icon":66,"section":66},"Nuxt JS Developers",{"path":1316},"\u002Fhire-nuxt-js-developers",{"children":1318},{"type":64,"label":1319,"url":66,"anchor_id":66,"target":67,"description":66,"page":1320,"icon":66,"section":66},"Next JS Developers",{"path":1321},"\u002Fhire-next-js-developers",{"children":1323},{"type":64,"label":1324,"url":66,"anchor_id":66,"target":67,"description":66,"page":1325,"icon":66,"section":66},"Vue JS Developers",{"path":1326},"\u002Fhire-vue-js-developers",{"children":1328},{"type":66,"label":1329,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1330,"section":66,"links":1335},"Backend",{"name":1331,"value":1331,"svg":1332},"Nestling",{"id":1333,"width":66,"height":66,"title":1331,"type":197,"filename_disk":1334},"89928fcc-9b32-41d7-879d-2a88846cc3bb","89928fcc-9b32-41d7-879d-2a88846cc3bb.svg",[1336,1341,1346,1351,1356,1361,1366],{"children":1337},{"type":64,"label":1338,"url":66,"anchor_id":66,"target":66,"description":66,"page":1339,"icon":66,"section":66},"GraphQL Developers",{"path":1340},"\u002Fhire-graphql-developers",{"children":1342},{"type":64,"label":1343,"url":66,"anchor_id":66,"target":67,"description":66,"page":1344,"icon":66,"section":66},"Java Developers",{"path":1345},"\u002Fhire-java-developers",{"children":1347},{"type":64,"label":1348,"url":66,"anchor_id":66,"target":67,"description":66,"page":1349,"icon":66,"section":66},"Laravel Developers",{"path":1350},"\u002Fhire-laravel-developers",{"children":1352},{"type":64,"label":1353,"url":66,"anchor_id":66,"target":67,"description":66,"page":1354,"icon":66,"section":66},"Liferay Developers",{"path":1355},"\u002Fhire-liferay-developers",{"children":1357},{"type":64,"label":1358,"url":66,"anchor_id":66,"target":67,"description":66,"page":1359,"icon":66,"section":66},"Node JS Developers",{"path":1360},"\u002Fhire-node-js-developers",{"children":1362},{"type":64,"label":1363,"url":66,"anchor_id":66,"target":66,"description":66,"page":1364,"icon":66,"section":66},"Nest JS Developers",{"path":1365},"\u002Fhire-nest-js-developers",{"children":1367},{"type":64,"label":1368,"url":66,"anchor_id":66,"target":67,"description":66,"page":1369,"icon":66,"section":66},"PHP Developers",{"path":1370},"\u002Fhire-php-developers",{"children":1372},{"type":66,"label":1373,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1374,"section":66,"links":1379},"Mobile",{"name":1375,"value":1375,"svg":1376},"River Stones",{"id":1377,"width":66,"height":66,"title":1375,"type":197,"filename_disk":1378},"07d7e1f0-7112-450a-a45a-badf40495d38","07d7e1f0-7112-450a-a45a-badf40495d38.svg",[1380,1387,1392,1397,1402,1407],{"children":1381},{"type":64,"label":1382,"url":66,"anchor_id":66,"target":67,"description":66,"page":1383,"icon":66,"section":1385},"Flutter Developers",{"path":1384},"\u002Fhire-flutter-developers",{"item":1386},"0c988c05-000c-48b0-9168-7741cbb50a55",{"children":1388},{"type":64,"label":1389,"url":66,"anchor_id":66,"target":67,"description":66,"page":1390,"icon":66,"section":66},"React Native Developers",{"path":1391},"\u002Fhire-react-native-developers",{"children":1393},{"type":64,"label":1394,"url":66,"anchor_id":66,"target":67,"description":66,"page":1395,"icon":66,"section":66},"iOS Developers",{"path":1396},"\u002Fhire-ios-developers",{"children":1398},{"type":64,"label":1399,"url":66,"anchor_id":66,"target":67,"description":66,"page":1400,"icon":66,"section":66},"Kotlin Developers",{"path":1401},"\u002Fhire-kotlin-developers",{"children":1403},{"type":64,"label":1404,"url":66,"anchor_id":66,"target":67,"description":66,"page":1405,"icon":66,"section":66},"Android Developers",{"path":1406},"\u002Fhire-android-developers",{"children":1408},{"type":64,"label":1409,"url":66,"anchor_id":66,"target":66,"description":66,"page":1410,"icon":66,"section":66},"Swift Developers",{"path":1411},"\u002Fhire-swift-developers",{"children":1413},{"type":66,"label":1414,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1415,"section":66,"links":1420},"CMS",{"name":1416,"value":1416,"svg":1417},"Pebble & Peak",{"id":1418,"width":66,"height":66,"title":1416,"type":197,"filename_disk":1419},"908d721e-4ab1-4a08-b42a-b93f011020a7","908d721e-4ab1-4a08-b42a-b93f011020a7.svg",[1421,1426,1431,1436,1441,1446,1451],{"children":1422},{"type":64,"label":1423,"url":66,"anchor_id":66,"target":67,"description":66,"page":1424,"icon":66,"section":66},"Webflow Developers",{"path":1425},"\u002Fhire-webflow-developer",{"children":1427},{"type":64,"label":1428,"url":66,"anchor_id":66,"target":67,"description":66,"page":1429,"icon":66,"section":66},"Directus Developers",{"path":1430},"\u002Fhire-directus-developers",{"children":1432},{"type":64,"label":1433,"url":66,"anchor_id":66,"target":67,"description":66,"page":1434,"icon":66,"section":66},"dotCMS Developer",{"path":1435},"\u002Fhire-dotcms-developers",{"children":1437},{"type":64,"label":1438,"url":66,"anchor_id":66,"target":67,"description":66,"page":1439,"icon":66,"section":66},"Strapi Developers",{"path":1440},"\u002Fhire-strapi-developers",{"children":1442},{"type":64,"label":1443,"url":66,"anchor_id":66,"target":67,"description":66,"page":1444,"icon":66,"section":66},"Contentful Developer",{"path":1445},"\u002Fhire-contentful-developers",{"children":1447},{"type":64,"label":1448,"url":66,"anchor_id":66,"target":67,"description":66,"page":1449,"icon":66,"section":66},"WordPress Developers",{"path":1450},"\u002Fhire-wordpress-developers",{"children":1452},{"type":64,"label":1453,"url":66,"anchor_id":66,"target":66,"description":66,"page":1454,"icon":66,"section":66},"Bubble.io Experts",{"path":1455},"\u002Fhire-bubble-experts",{"children":1457},{"type":66,"label":1458,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1459,"section":66,"links":1464},"Design",{"name":1460,"value":1460,"svg":1461},"Starleaf",{"id":1462,"width":66,"height":66,"title":1460,"type":197,"filename_disk":1463},"2eb01417-c486-4bed-a9f9-dd10fd3be974","2eb01417-c486-4bed-a9f9-dd10fd3be974.svg",[1465,1470],{"children":1466},{"type":64,"label":1467,"url":66,"anchor_id":66,"target":67,"description":66,"page":1468,"icon":66,"section":66},"Figma Designers",{"path":1469},"\u002Fhire-figma-designer",{"children":1471},{"type":64,"label":1472,"url":66,"anchor_id":66,"target":67,"description":66,"page":1473,"icon":66,"section":66},"Framer Developers",{"path":1474},"\u002Fhire-framer-developers",{"children":1476},{"type":66,"label":1477,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1478,"section":66,"links":1483},"E-Commerce",{"name":1479,"value":1479,"svg":1480},"Dune",{"id":1481,"width":66,"height":66,"title":1479,"type":197,"filename_disk":1482},"dd39f9f2-1e72-4447-bf18-82d2c2576852","dd39f9f2-1e72-4447-bf18-82d2c2576852.svg",[1484],{"children":1485},{"type":64,"label":1486,"url":66,"anchor_id":66,"target":67,"description":66,"page":1487,"icon":66,"section":66},"Shopify Developers",{"path":1488},"\u002Fhire-shopify-developers",{"children":1490},{"type":66,"label":1491,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1492,"section":66,"links":1497},"Cloud",{"name":1493,"value":1493,"svg":1494},"Rising Moon",{"id":1495,"width":66,"height":66,"title":1493,"type":197,"filename_disk":1496},"daa3f389-edec-4105-ba2a-199d4c279b1b","daa3f389-edec-4105-ba2a-199d4c279b1b.svg",[1498,1503,1508],{"children":1499},{"type":64,"label":1500,"url":66,"anchor_id":66,"target":67,"description":66,"page":1501,"icon":66,"section":66},"AWS Experts",{"path":1502},"\u002Fhire-aws-experts",{"children":1504},{"type":64,"label":1505,"url":66,"anchor_id":66,"target":67,"description":66,"page":1506,"icon":66,"section":66},"Digital Ocean Experts",{"path":1507},"\u002Fhire-digital-ocean-experts",{"children":1509},{"type":64,"label":1510,"url":66,"anchor_id":66,"target":66,"description":66,"page":1511,"icon":66,"section":66},"Supabase Experts",{"path":1512},"\u002Fhire-supabase-experts",{"children":1514},{"type":66,"label":1515,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":1516,"section":66,"links":1521},"ERP",{"name":1517,"value":1517,"svg":1518},"Petal",{"id":1519,"width":66,"height":66,"title":1517,"type":197,"filename_disk":1520},"5210c66b-db76-4000-816b-c9be9ed6660b","5210c66b-db76-4000-816b-c9be9ed6660b.svg",[1522],{"children":1523},{"type":64,"label":1524,"url":66,"anchor_id":66,"target":67,"description":66,"page":1525,"icon":66,"section":66},"Odoo Developers",{"path":1526},"\u002Fhire-odoo-developer",{"link":1528},{"type":64,"label":1529,"url":66,"anchor_id":66,"target":66,"description":66,"page":1530,"icon":66,"section":66,"links":1532},"Work",{"path":1531},"\u002Fwork",[],{"link":1534},{"type":66,"label":1535,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":66,"section":66,"links":1536},"Products",[1537,1563,1623,1664,1775],{"children":1538},{"type":66,"label":92,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":66,"section":66,"links":1539},[1540,1552],{"children":1541},{"type":64,"label":1542,"url":66,"anchor_id":66,"target":988,"description":1543,"page":1544,"icon":1546,"section":66,"links":1551},"Vepaar","\u003Cp>The all-in-one suite to run, sell, and support your business online\u003C\u002Fp>",{"path":1545},"\u002Fvepaar",{"name":1547,"value":66,"svg":1548},"Vepaar Icon",{"id":1549,"width":66,"height":66,"title":1542,"type":197,"filename_disk":1550},"d4bead81-d2b1-4457-bb6b-1c363f743d9d","d4bead81-d2b1-4457-bb6b-1c363f743d9d.svg",[],{"children":1553},{"type":64,"label":1554,"url":66,"anchor_id":66,"target":988,"description":1555,"page":1556,"icon":1558,"section":66,"links":1562},"Pagemaker","\u003Cp>Mobile First No-Code Landing Page Builder\u003C\u002Fp>",{"path":1557},"\u002Fpagemaker",{"name":1554,"value":66,"svg":1559},{"id":1560,"width":66,"height":66,"title":1554,"type":197,"filename_disk":1561},"d4ac2317-ff68-456d-abec-2ebc0930cd42","d4ac2317-ff68-456d-abec-2ebc0930cd42.svg",[],{"children":1564},{"type":66,"label":1565,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":66,"section":66,"links":1566},"Mobile Apps",[1567,1578,1589,1600,1612],{"children":1568},{"type":64,"label":1569,"url":66,"anchor_id":66,"target":988,"description":1570,"page":1571,"icon":1573,"section":66,"links":1577},"Tapomo","\u003Cp>A Digital Business Card and Networking Platform\u003C\u002Fp>",{"path":1572},"\u002Ftapomo",{"name":1569,"value":66,"svg":1574},{"id":1575,"width":66,"height":66,"title":1569,"type":197,"filename_disk":1576},"13cc60db-cd9e-4fff-8f13-76b6155ab95d","13cc60db-cd9e-4fff-8f13-76b6155ab95d.svg",[],{"children":1579},{"type":64,"label":1580,"url":66,"anchor_id":66,"target":988,"description":1581,"page":1582,"icon":1584,"section":66,"links":1588},"Voliz","\u003Cp>A Real-Time WhatsApp Polling Platform\u003C\u002Fp>",{"path":1583},"\u002Fvoliz",{"name":1580,"value":66,"svg":1585},{"id":1586,"width":66,"height":66,"title":1580,"type":197,"filename_disk":1587},"d79f8032-d289-4376-bdd8-84d205ae2582","d79f8032-d289-4376-bdd8-84d205ae2582.svg",[],{"children":1590},{"type":64,"label":1591,"url":66,"anchor_id":66,"target":988,"description":1592,"page":1593,"icon":1595,"section":66,"links":1599},"Frink","\u003Cp>A Customizable Link in Bio Tool for Creators and Brands\u003C\u002Fp>",{"path":1594},"\u002Ffrink",{"name":1591,"value":66,"svg":1596},{"id":1597,"width":66,"height":66,"title":1591,"type":197,"filename_disk":1598},"82f881ca-7824-482b-a9ca-16ccb5f92037","82f881ca-7824-482b-a9ca-16ccb5f92037.svg",[],{"children":1601},{"type":64,"label":1602,"url":66,"anchor_id":66,"target":988,"description":1603,"page":1604,"icon":1606,"section":66,"links":1611},"BakLoL","\u003Cp>A Location-Based Voice Sharing Platform\u003C\u002Fp>",{"path":1605},"\u002Fbaklol",{"name":1602,"value":66,"svg":1607},{"id":1608,"width":66,"height":66,"title":1609,"type":197,"filename_disk":1610},"98f3c152-6255-45f1-a81f-fcc5e3414738","Baklol","98f3c152-6255-45f1-a81f-fcc5e3414738.svg",[],{"children":1613},{"type":64,"label":1614,"url":66,"anchor_id":66,"target":988,"description":1615,"page":1616,"icon":1618,"section":66,"links":1622},"Mixpage","\u003Cp>Build Your Website From Your Phone\u003C\u002Fp>",{"path":1617},"\u002Fmixpage",{"name":1614,"value":66,"svg":1619},{"id":1620,"width":66,"height":66,"title":1614,"type":197,"filename_disk":1621},"984e1e41-5b38-4b0a-9348-204b5c74920f","984e1e41-5b38-4b0a-9348-204b5c74920f.svg",[],{"children":1624},{"type":66,"label":1625,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":66,"section":66,"links":1626},"Odoo Apps",[1627,1640,1652],{"children":1628},{"type":64,"label":1629,"url":66,"anchor_id":66,"target":988,"description":1630,"page":1631,"icon":1633,"section":66,"links":1639},"CRM Dashboard","\u003Cp>Real-Time Sales &amp; Revenue Tracking\u003C\u002Fp>",{"path":1632},"\u002Fodoo-apps\u002Fcrm-dashboard",{"name":1634,"value":66,"svg":1635},"CRM Dashboard Icon",{"id":1636,"width":66,"height":66,"title":1637,"type":197,"filename_disk":1638},"2cae4e0f-2f45-4f8e-8bf6-15f00ac88835","Crm","2cae4e0f-2f45-4f8e-8bf6-15f00ac88835.svg",[],{"children":1641},{"type":64,"label":1642,"url":66,"anchor_id":66,"target":988,"description":1643,"page":1644,"icon":1646,"section":66,"links":1651},"Cashfree Integration","\u003Cp>Payment Gateway Integration for Odoo\u003C\u002Fp>",{"path":1645},"\u002Fodoo-apps\u002Fcashfree",{"name":1647,"value":66,"svg":1648},"Cashfree",{"id":1649,"width":66,"height":66,"title":1647,"type":197,"filename_disk":1650},"846054ee-c8e0-4051-b561-0c1be07c51f1","846054ee-c8e0-4051-b561-0c1be07c51f1.svg",[],{"children":1653},{"type":64,"label":1654,"url":66,"anchor_id":66,"target":988,"description":1655,"page":1656,"icon":1658,"section":66,"links":1663},"Purchase Order","\u003Cp>Order Payment App for B2B Checkout\u003C\u002Fp>",{"path":1657},"\u002Fodoo-apps\u002Fpurchase-order",{"name":1654,"value":66,"svg":1659},{"id":1660,"width":66,"height":66,"title":1661,"type":197,"filename_disk":1662},"098cf550-448b-4114-91d3-fbac10b7f0d9","Purchase 2","098cf550-448b-4114-91d3-fbac10b7f0d9.svg",[],{"children":1665},{"type":64,"label":1666,"url":66,"anchor_id":66,"target":66,"description":66,"page":1667,"icon":66,"section":66,"links":1669},"Open Source",{"path":1668},"\u002Fopen-source",[1670,1687,1700,1712,1726,1739,1751,1764],{"children":1671},{"type":1672,"label":1673,"url":1674,"anchor_id":1675,"target":988,"description":1676,"page":1677,"icon":1678,"section":1684,"links":1686},"section","VueList","https:\u002F\u002F7span.com\u002Fopen-source#124e0f59-576e-4b49-9026-7387da467b91","124e0f59-576e-4b49-9026-7387da467b91","\u003Cp>Simplified API-based list rendering for Vue\u003C\u002Fp>",{"path":1668},{"name":1679,"value":66,"svg":1680},"Vue List Icon",{"id":1681,"width":66,"height":66,"title":1682,"type":197,"filename_disk":1683},"049a33aa-cbf8-4b83-94d8-4a78c9faaf8a","Vue List","049a33aa-cbf8-4b83-94d8-4a78c9faaf8a.svg",{"item":1685},"e5d8dfa8-b10a-4e99-8d28-7f80f9093dfa",[],{"children":1688},{"type":1672,"label":1689,"url":66,"anchor_id":1690,"target":67,"description":1691,"page":1692,"icon":1693,"section":1698,"links":1699},"ReactList","ffedf96a-b43d-45aa-84b8-51110cb37a4f","\u003Cp>Simplified API-based list rendering for React\u003C\u002Fp>",{"path":1668},{"name":1694,"value":66,"svg":1695},"React List",{"id":1696,"width":66,"height":66,"title":1694,"type":197,"filename_disk":1697},"153b9211-ca81-4fe5-bc76-753821ee6da7","153b9211-ca81-4fe5-bc76-753821ee6da7.svg",{"item":1690},[],{"children":1701},{"type":1672,"label":1702,"url":66,"anchor_id":1685,"target":988,"description":1703,"page":1704,"icon":1705,"section":1710,"links":1711},"VueForm","\u003Cp>Build consistent CRUD forms, faster for Vue\u003C\u002Fp>",{"path":1668},{"name":1706,"value":66,"svg":1707},"Vue Form",{"id":1708,"width":66,"height":66,"title":1706,"type":197,"filename_disk":1709},"7e33276e-fc6d-438f-9c10-5d2d70ab0606","7e33276e-fc6d-438f-9c10-5d2d70ab0606.svg",{"item":1685},[],{"children":1713},{"type":1672,"label":1714,"url":66,"anchor_id":1715,"target":67,"description":1716,"page":1717,"icon":1718,"section":1724,"links":1725},"ReactForm","8c35e524-04a2-4d63-ab2b-9154efd92323","\u003Cp>Build consistent CRUD forms, faster for React.\u003C\u002Fp>",{"path":1668},{"name":1719,"value":66,"svg":1720},"React Form",{"id":1721,"width":66,"height":66,"title":1722,"type":197,"filename_disk":1723},"d49e0b78-c98f-4bda-9dc4-4f5f238cf06a","React Form 3","d49e0b78-c98f-4bda-9dc4-4f5f238cf06a.svg",{"item":1715},[],{"children":1727},{"type":1672,"label":1728,"url":66,"anchor_id":1729,"target":66,"description":1730,"page":1731,"icon":1732,"section":1737,"links":1738},"DashingKit","28787115-d6c9-48e9-9569-a184610e1d84","\u003Cp>A Flutter starter kit built for scalable apps\u003C\u002Fp>",{"path":1668},{"name":1733,"value":66,"svg":1734},"Dashing Kit",{"id":1735,"width":66,"height":66,"title":1733,"type":197,"filename_disk":1736},"c742d34d-afc2-4e89-a8fe-34f68a95c5c0","c742d34d-afc2-4e89-a8fe-34f68a95c5c0.svg",{"item":1729},[],{"children":1740},{"type":1672,"label":1741,"url":66,"anchor_id":1742,"target":66,"description":1743,"page":1744,"icon":1745,"section":1749,"links":1750},"Laravel Chat","34f46942-e97b-43c4-aa2a-ff34a38853ed","\u003Cp>The all-in-one Laravel chat package\u003C\u002Fp>",{"path":1668},{"name":1741,"value":66,"svg":1746},{"id":1747,"width":66,"height":66,"title":1741,"type":197,"filename_disk":1748},"c2558639-c78c-45a3-9a75-cc7c2bfcc250","c2558639-c78c-45a3-9a75-cc7c2bfcc250.svg",{"item":1742},[],{"children":1752},{"type":1672,"label":1753,"url":66,"anchor_id":1754,"target":66,"description":1755,"page":1756,"icon":1757,"section":1762,"links":1763},"Laravel Code Generator","550942dc-1760-41da-9ac6-d0305bf8ae33","\u003Cp>Automated CRUD Code\u003C\u002Fp>",{"path":1668},{"name":1758,"value":66,"svg":1759},"Laravel Code Genrator",{"id":1760,"width":66,"height":66,"title":1753,"type":197,"filename_disk":1761},"6a9a0b3f-987e-47b5-a98d-620db73dd3c6","6a9a0b3f-987e-47b5-a98d-620db73dd3c6.svg",{"item":1754},[],{"children":1765},{"type":66,"label":1766,"url":66,"anchor_id":1767,"target":66,"description":1768,"page":66,"icon":1769,"section":66,"links":1774},"Laravel WhatsApp","0d6926a8-0bce-4d31-8f1d-c49de22aa674","\u003Cp>Easy WhatsApp Message API Integration\u003C\u002Fp>",{"name":1770,"value":66,"svg":1771},"Laravel Whatsapp",{"id":1772,"width":66,"height":66,"title":1770,"type":197,"filename_disk":1773},"686ec747-c1d4-431a-8e94-f65b11c24067","686ec747-c1d4-431a-8e94-f65b11c24067.svg",[],{"children":1776},{"type":66,"label":1777,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":66,"section":66,"links":1778},"Brands",[1779,1790],{"children":1780},{"type":64,"label":1781,"url":66,"anchor_id":66,"target":988,"description":1782,"page":1783,"icon":1785,"section":66,"links":1789},"Motolith","\u003Cp>A Unified Auto Parts Marketplace Platform\u003C\u002Fp>",{"path":1784},"\u002Fmotolith",{"name":1781,"value":66,"svg":1786},{"id":1787,"width":66,"height":66,"title":1781,"type":197,"filename_disk":1788},"7965c08f-b2e5-40cf-b51a-23c3f04b8f4e","7965c08f-b2e5-40cf-b51a-23c3f04b8f4e.svg",[],{"children":1791},{"type":64,"label":1792,"url":66,"anchor_id":66,"target":988,"description":1793,"page":1794,"icon":1796,"section":66,"links":1800},"Carkhana","\u003Cp>A Digital Garage and Vehicle Management Platform\u003C\u002Fp>",{"path":1795},"\u002Fcarkhana",{"name":1792,"value":66,"svg":1797},{"id":1798,"width":66,"height":66,"title":1792,"type":197,"filename_disk":1799},"04a7e020-1f2a-4b47-a9fe-18a0938b5ffc","04a7e020-1f2a-4b47-a9fe-18a0938b5ffc.svg",[],{"link":1802},{"type":64,"label":1803,"url":66,"anchor_id":66,"target":67,"description":66,"page":1804,"icon":66,"section":66,"links":1806},"Blog",{"path":1805},"\u002Fblog",[],{"link":1808},{"type":66,"label":1809,"url":66,"anchor_id":66,"target":66,"description":66,"page":66,"icon":66,"section":66,"links":1810},"Company",[1811,1817,1823,1827,1832],{"children":1812},{"type":64,"label":1813,"url":66,"anchor_id":66,"target":66,"description":66,"page":1814,"icon":66,"section":66,"links":1816},"About",{"path":1815},"\u002Fabout",[],{"children":1818},{"type":64,"label":1819,"url":66,"anchor_id":66,"target":66,"description":66,"page":1820,"icon":66,"section":66,"links":1822},"Testimonials",{"path":1821},"\u002Ftestimonials",[],{"children":1824},{"type":64,"label":1008,"url":66,"anchor_id":66,"target":66,"description":66,"page":1825,"icon":66,"section":66,"links":1826},{"path":1010},[],{"children":1828},{"type":64,"label":1829,"url":66,"anchor_id":66,"target":66,"description":66,"page":1830,"icon":66,"section":66,"links":1831},"Contact",{"path":1086},[],{"children":1833},{"type":64,"label":1834,"url":66,"anchor_id":66,"target":988,"description":66,"page":1835,"icon":66,"section":66,"links":1837},"Brand Assets",{"path":1836},"\u002Fbrand",[],{"id":42,"links":1839},[1840,1844,1848,1852,1856,1860,1864,1868,1872],{"link":1841},{"type":985,"label":1842,"url":1843,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"LinkedIn","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002F7span",{"link":1845},{"type":985,"label":1846,"url":1847,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"Instagram","https:\u002F\u002Finstagram.com\u002F7span",{"link":1849},{"type":985,"label":1850,"url":1851,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"X","https:\u002F\u002Fx.com\u002F7SpanHQ",{"link":1853},{"type":985,"label":1854,"url":1855,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"Facebook","https:\u002F\u002Ffacebook.com\u002F7span",{"link":1857},{"type":985,"label":1858,"url":1859,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"Youtube","https:\u002F\u002Fyoutube.com\u002F7span",{"link":1861},{"type":985,"label":1862,"url":1863,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"Discord","https:\u002F\u002F7span.in\u002Fclub",{"link":1865},{"type":985,"label":1866,"url":1867,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"Dribbble","https:\u002F\u002Fdribbble.com\u002F7span",{"link":1869},{"type":985,"label":1870,"url":1871,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"Behance","https:\u002F\u002Fwww.behance.net\u002F7span",{"link":1873},{"type":985,"label":1874,"url":1875,"anchor_id":66,"target":988,"description":66,"page":66,"icon":66,"section":66},"Github","https:\u002F\u002Fgithub.com\u002F7span",{"id":46,"iso_badges":1877,"logo":1878,"logo_link":66,"links":1879},"ISO 9001:2015 | ISO 42001:2023 Certified",{"id":1075,"title":1076,"filename_disk":1077},[1880,1885,1890],{"link":1881},{"type":64,"label":1882,"url":66,"anchor_id":66,"target":988,"description":66,"page":1883,"icon":66,"section":66},"Sitemap",{"path":1884},"\u002Fsitemap",{"link":1886},{"type":64,"label":1887,"url":66,"anchor_id":66,"target":988,"description":66,"page":1888,"icon":66,"section":66},"Refund Policy",{"path":1889},"\u002Frefund-policy",{"link":1891},{"type":64,"label":1892,"url":66,"anchor_id":66,"target":988,"description":66,"page":1893,"icon":66,"section":66},"Privacy",{"path":1894},"\u002Fprivacy-policy",[1896,1911,1929],{"id":1897,"title":1898,"slug":1899,"date_published":1900,"tags":1901,"cover":1904,"author":1907},"6d85b24c-94a2-41e0-b4da-f03313fce6e3","Testing Java Apps Like a Pro: JUnit 5, Mockito & Testcontainers","testing-java-apps","2026-02-10",[1902],{"bg_tags_id":1903},{"label":215,"slug":216},{"id":1905,"filename_disk":1906},"7bca449b-fef8-4024-bb2d-ad27d69f5f61","7bca449b-fef8-4024-bb2d-ad27d69f5f61.webp",{"first_name":1908,"last_name":1909,"slug":1910},"Harsh","Shiyani","harsh-shiyani",{"id":1912,"title":1913,"slug":1914,"date_published":1915,"tags":1916,"cover":1922,"author":1925},"4e931209-4a31-47ef-881a-c99cc8b18834","Secure Google & Apple Sign-In in FlutterFlow Using Custom Actions","google-and-apple-sign-in-flutter-flow","2026-01-21",[1917,1920],{"bg_tags_id":1918},{"label":1373,"slug":1919},"mobile",{"bg_tags_id":1921},{"label":215,"slug":216},{"id":1923,"filename_disk":1924},"94648f4c-8a33-4647-b692-7a4a6c075a40","94648f4c-8a33-4647-b692-7a4a6c075a40.webp",{"first_name":1926,"last_name":1927,"slug":1928},"Nikunj","Panchal","nikunj-panchal",{"id":1930,"title":1931,"slug":1932,"date_published":1915,"tags":1933,"cover":1938,"author":1941},"7ac0e918-5c7d-49f9-b22a-1fce613e3669","Optimizing Battery Usage in iOS Apps: Best Practices Guide","optimizing-battery-usage-ios-apps",[1934,1936],{"bg_tags_id":1935},{"label":1373,"slug":1919},{"bg_tags_id":1937},{"label":215,"slug":216},{"id":1939,"filename_disk":1940},"5e192d8d-7dfb-4886-b22c-c71355335e1a","5e192d8d-7dfb-4886-b22c-c71355335e1a.webp",{"first_name":1942,"last_name":1943,"slug":1944},"Jaydip","Jadav","jaydip-jadav"]