Hide API Keys with a Node.js API Proxy + Caching, Rate Limiting and Slow Downs

แชร์
ฝัง
  • เผยแพร่เมื่อ 2 ส.ค. 2024
  • This is an excerpt from a stream that was broadcasted live on twitch: / codinggarden
    View the full live stream here: • 🗣💬 | CODING Q&A | What...
    View the code here: github.com/CodingGarden/mars-...
    💪 View all past episodes here: • Code Wars Code Katas
    🔎 Search past kata solutions here: code-katas.now.sh/
    💖 Donate: coding.garden/donate
    😍 Pledge: coding.garden/pledge
    💬 Discord: coding.garden/discord
    🎉 Stickers: coding.garden/stickers
    💻 Gear List: coding.garden/gear
    🔎 Search for more Coding Garden videos here: coding.garden/videos
    🗣 View the Coding Garden FAQ here: github.com/CodingGardenCommun...
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 128

  • @jdhage89
    @jdhage89 4 ปีที่แล้ว +20

    Without TH-cam I would have never found out about you and what you do. I'm going to tune into your Twitch in the future, but these videos available on TH-cam have been invaluable to me, and I really appreciate your taking the time to cultivate this coding garden!

  • @Jaykmrch
    @Jaykmrch 3 ปีที่แล้ว +11

    I learnt how to do all this myself and was always nervous that the things I was doing were not best practices and wrong. I feel validated that I was using best practices now lol. Thank you so much.

  • @rautanenolavi
    @rautanenolavi 3 ปีที่แล้ว +3

    Hey! Happy to find your content as this was closely related to a topic I was struggling to tackle. You earned yourself a new fan!

  • @not-yourbusiness
    @not-yourbusiness 4 ปีที่แล้ว +4

    We support you as well! I'm loving your content and your personality from France !

  • @benhakliyim6405
    @benhakliyim6405 4 ปีที่แล้ว +5

    I was looking for this for almost a month. Finally got a decent answer

  • @weslleyhenriquecavalcante2607
    @weslleyhenriquecavalcante2607 3 ปีที่แล้ว +1

    I learned about backend and sec with this video more than in my whole life. Thanks, CJ for that loveable content.

  • @pikolino210
    @pikolino210 4 ปีที่แล้ว +1

    Wow bro Im a programming beginner and usually pretty slow too, and even though I clicked on this video without even knowing what exactly it is about, I must say I understood everything super clear! You're awesome, thank you!

  • @TomCupis
    @TomCupis 4 ปีที่แล้ว +27

    Hope you keep making these youtube highlights! I've recently discovered your channel on yt and its great! Might even go visit your twitch ;P

  • @tomigmelo
    @tomigmelo 4 ปีที่แล้ว +1

    Very informative video. Quick and easy. Keep up the good work!

  • @eunito9447
    @eunito9447 3 ปีที่แล้ว +1

    Man! You are such a great tutor! Congrats!!!!

  • @sivaganesh4489
    @sivaganesh4489 4 ปีที่แล้ว +1

    wow what a content really appreciating. Thank you dude

  • @codewithkawagari6377
    @codewithkawagari6377 2 ปีที่แล้ว +1

    i don't know what to say but this one really helps me a lot! Love you so much!

  • @dislexicllama
    @dislexicllama 4 ปีที่แล้ว

    Keep making these youtube highlights! I won't be able to watch your Twitch stream, so if you didn't make these videos I'd be missing out on all the good stuff! Keep it up :)

  • @davidhernandeze
    @davidhernandeze 4 ปีที่แล้ว

    you help me a lot since I'm starting with node js

  • @MaZyYTube
    @MaZyYTube 4 ปีที่แล้ว +1

    I learn from you so much. Thats insane.

  • @tanwanimohit
    @tanwanimohit 4 ปีที่แล้ว +1

    Love your explanation❤

  • @sams6454
    @sams6454 4 ปีที่แล้ว +1

    This is seriously impressive

  • @rahulsolankib
    @rahulsolankib ปีที่แล้ว +1

    Loved it, these are rare, precious practical knowledge

  • @ceralguy85
    @ceralguy85 4 ปีที่แล้ว +2

    CJ great video this is one of the best tech channels. Have you ever try to apply clean architecture to a project. I would be great to see you how to structure a project.

  • @johnyepthomi892
    @johnyepthomi892 3 ปีที่แล้ว +1

    Awesome upload as always

  • @isurumaldeniya9536
    @isurumaldeniya9536 3 ปีที่แล้ว +1

    Quality content. Learn new things. Thanks ❤

  • @rabbyhossain6150
    @rabbyhossain6150 4 ปีที่แล้ว

    Incredible work.

  • @martinmj94
    @martinmj94 2 ปีที่แล้ว

    Got a ton of value from this video. Just leaving a comment in appreciation.

  • @rajshrishrimal2653
    @rajshrishrimal2653 4 ปีที่แล้ว

    Superb video CJ !!! 😎

  • @rithwiksm
    @rithwiksm 4 ปีที่แล้ว

    CJ's content is amazing 🤩

  • @scipakos
    @scipakos 4 ปีที่แล้ว

    Super video. Thanks!!

  • @ivanknezovic8451
    @ivanknezovic8451 4 ปีที่แล้ว

    Great videos mate, keep it up! "I have to change my port" :D

  • @MrChickenpoulet
    @MrChickenpoulet 4 ปีที่แล้ว

    hey really cool vid ! hope you'll keep making some !

  • @esiokao1932
    @esiokao1932 2 ปีที่แล้ว

    Much appreciated !

  • @Tszyu01
    @Tszyu01 3 ปีที่แล้ว

    Another option to consider for the proxy portion of this code is express-http-proxy which will effectively and easily forward/proxy requests to specified path including headers, params, body and similar as a simple middleware. It has plenty of configuration options to rewrite the path or perform actions before/after proxying. There is nothing wrong with axios, but the effort can be simplified using a library like that.

  • @asfandsiddique7434
    @asfandsiddique7434 2 ปีที่แล้ว

    Your videos are great, keep posting content like this

  • @joelbrandao4
    @joelbrandao4 3 ปีที่แล้ว

    This is gold content!

  • @timojedai6576
    @timojedai6576 3 ปีที่แล้ว

    Dope content 🙌🏽

  • @chriswhincop7944
    @chriswhincop7944 3 ปีที่แล้ว

    Thanks, CJ! :)

  • @baekdusan815
    @baekdusan815 4 ปีที่แล้ว

    I keep watching your videos bc you are fun and nice to watch 🤗🤗🤗🤗🤗☺️❤️

  • @octofox9098
    @octofox9098 4 ปีที่แล้ว

    great content - ty!!!!

  • @indrakhatiwada9860
    @indrakhatiwada9860 4 ปีที่แล้ว +1

    have a great vacation CJ

  • @restuwahyusaputra7764
    @restuwahyusaputra7764 4 ปีที่แล้ว

    Great content thanks

  • @domthefounder
    @domthefounder 4 หลายเดือนก่อน

    Thanks!

  • @Chaaos2
    @Chaaos2 4 ปีที่แล้ว +1

    This was an amazing video! Freaking Randy!

  • @gonzalo8642
    @gonzalo8642 4 ปีที่แล้ว +1

    What plug in did you use to display the comment with the date at 18:22

  • @truongnguyenvan9050
    @truongnguyenvan9050 3 ปีที่แล้ว

    Great videos. thanks you so much

  • @Canon22211
    @Canon22211 4 ปีที่แล้ว

    Cool! Thank you.

  • @groovebird812
    @groovebird812 4 ปีที่แล้ว +2

    Hi, you are great. Yesterday i built a little app which exactly the same problem and i did it like in the video, but you show much more useful things. Thank you :-) It was amazing if you could make a video like this to the following topic: how can our own api more secure? (api key? authentication? json web token? I don't know :-))

  • @rajitha1911
    @rajitha1911 3 ปีที่แล้ว

    Thank you

  • @AliParlakci
    @AliParlakci 4 ปีที่แล้ว +6

    That's some great tutorial there

  • @abdallahmohamed4591
    @abdallahmohamed4591 4 ปีที่แล้ว

    wonderful content bro, but i've curios to know what is the keyboard that you r using ???

  • @osherezra8460
    @osherezra8460 4 ปีที่แล้ว

    Awesome Video bro keep it up like always, could you share the link to the express scaffold library?

  • @sahllsaharn4664
    @sahllsaharn4664 ปีที่แล้ว

    Question : i want that only my frontend should connect with backend api and if i create a proxy so that user can still take it and make request and do with the data

  • @arghyamitra3281
    @arghyamitra3281 4 ปีที่แล้ว

    Can we store the keys on Aws secret manager ?

  • @howardh6857
    @howardh6857 4 ปีที่แล้ว

    you can limit the website CORS or ip/domain restriction i.e. use a api gateway or use ssl 2way ssl. when you register a key tie it to a domain name

  • @ginoescobar8131
    @ginoescobar8131 3 ปีที่แล้ว

    thanks

  • @ashutoshpanda4336
    @ashutoshpanda4336 4 ปีที่แล้ว

    So in angular I've left some firebase config in environments folder, so the environment folder is also exposed to client or what kindly let me....

  • @jamieguthrie1760
    @jamieguthrie1760 3 ปีที่แล้ว

    Randy with the bits!

  • @tysonvega
    @tysonvega 4 ปีที่แล้ว

    hiii there so i need your help trying to start a node js server on shared hosting..but it isn't working what could be the problem

  • @leventc777
    @leventc777 3 ปีที่แล้ว

    Thank u so much, regards

  • @miunify
    @miunify 4 ปีที่แล้ว +2

    This is so fcking awesome

  • @bsen2267
    @bsen2267 3 ปีที่แล้ว

    You so awesome maaaaan!!

  • @josefreitas6997
    @josefreitas6997 2 ปีที่แล้ว

    Hey! If you wanted to make a post request using express and axios like you used in this video how would it be? I've been scratching my head trying to find a solution!

  • @gillfromamritsar
    @gillfromamritsar 4 ปีที่แล้ว

    what are those bits means ?

  • @goowik3862
    @goowik3862 3 ปีที่แล้ว

    What is that "take a break" app?

  • @tiagocastro6302
    @tiagocastro6302 4 ปีที่แล้ว

    Very good video, but if the attacker changes his IP in every request?

  • @sheldonfourie5959
    @sheldonfourie5959 4 ปีที่แล้ว

    Amazing

  • @manologarciadev
    @manologarciadev 4 ปีที่แล้ว

    Nice !

  • @yangj6941
    @yangj6941 4 ปีที่แล้ว +1

    how did you create the express generator?

  • @VikasSharma-io5ip
    @VikasSharma-io5ip 4 ปีที่แล้ว

    For a time being if i consider only cache, and not rate limiter and slowdown, to store responses, does that mean for every request i am storing data in cache. Wouldn't that lead to high memory usage? Still video helped.Thanks

  • @Mohammed-vl8sj
    @Mohammed-vl8sj 4 ปีที่แล้ว +2

    How did you create the express setup from the command line..?

    • @mayorityz
      @mayorityz 4 ปีที่แล้ว

      there is a package that when installed, sets it all up. kinda like Laravel. I think it is Node-Expres..

  • @cjliu4657
    @cjliu4657 2 ปีที่แล้ว

    what vscode theme?

  • @rogercolque
    @rogercolque 4 ปีที่แล้ว

    Nice topic man.
    What u recommend me if my api endpoind had many requests
    ,
    For example for in mobile app like a delivery app that its necesary use api for *maps routes and others* _that consumes money and by increasing requests
    _ .
    In mobile app configuration its my problem
    This video applies to this issue?
    its possible to use an new way security *this* using some hack int server (Backend) side.
    Thanks

  • @joshstout
    @joshstout 4 ปีที่แล้ว

    Actual modern and quality accurate content fam! you get my sub

  • @letmecommentalready
    @letmecommentalready 4 ปีที่แล้ว

    Hey not sure if you’ll see this but have you ever gone over something like this but with 0auth? It’s a tricky subject for me

  • @dawid_dahl
    @dawid_dahl 4 ปีที่แล้ว

    What is time?

  • @earthycoin
    @earthycoin 2 ปีที่แล้ว

    Nice

  • @jeffersonestevam5960
    @jeffersonestevam5960 3 ปีที่แล้ว

    What is your VS Code Theme?

  • @AnthonyJackman
    @AnthonyJackman ปีที่แล้ว

    What coding break timer are you using in this video?? I did notice that you are on an Apple device, but I should be able to find a windows export of this same one.

    • @CodingGarden
      @CodingGarden  ปีที่แล้ว

      github.com/CodingGarden/faqs/#what-is-that-break-reminder-that-keeps-popping-up

  • @rileyboyd
    @rileyboyd 2 ปีที่แล้ว

    If the NASA API required a JWT token, where would you store it in NodeJS? I'm new to Node, trying to figure out where a token would be stored in a proxy API set up like this. Also great video, thank you!

  • @Mutlaq777
    @Mutlaq777 4 ปีที่แล้ว +3

    🌱

  • @introduction
    @introduction 4 ปีที่แล้ว +3

    Hey, I need help. I am curious, how can I go about logging each request made with api, so I can know the total amount of request being made to my api and store it somewhere?

    • @tomigmelo
      @tomigmelo 4 ปีที่แล้ว

      Commenting because I wanna know too

    • @introduction
      @introduction 4 ปีที่แล้ว

      @@tomigmelo I was able to do it on my own slightly, I used mongodb, but I'll rather know how he'll go about it.

    • @OfficialGOD_YT
      @OfficialGOD_YT 4 ปีที่แล้ว

      @@introduction he'll also do the same

  • @diegoazpeitia5708
    @diegoazpeitia5708 4 ปีที่แล้ว

    God content!

  • @georgep6553
    @georgep6553 3 ปีที่แล้ว

    You can encrypt the data so that only you can decrypt it. The decryption is the "authentication". CORS is another option.

  • @javohir307
    @javohir307 4 ปีที่แล้ว

    Hi, could you tell me what is specs of your current macbook ?

    • @CodingGarden
      @CodingGarden  4 ปีที่แล้ว +1

      This is the MacBook I have: everymac.com/systems/apple/macbook_pro/specs/macbook-pro-core-i7-2.5-15-dual-graphics-mid-2015-retina-display-specs.html

  • @yorrickbakker3533
    @yorrickbakker3533 4 ปีที่แล้ว

    How are you saving dependencies to package.json without --save? Do you have an alias set up?

    • @SpectralVFX
      @SpectralVFX 4 ปีที่แล้ว +1

      npm install command saves dependencies by default ;)

    • @yorrickbakker3533
      @yorrickbakker3533 4 ปีที่แล้ว

      Júlio Michél Guadagnim wow, I never knew that. Sick, saves me like 6 keystrokes

  • @rickyu1978
    @rickyu1978 3 ปีที่แล้ว

    Put your api behind a CDN, and enable hotlink protection or url singing.. or you a API gateway to control all these.

  • @tautologicalnickname
    @tautologicalnickname 4 ปีที่แล้ว

    whats ur colorscheme please?

  • @caienleiful
    @caienleiful 3 ปีที่แล้ว

    👍

  • @lastmaj
    @lastmaj 4 ปีที่แล้ว

    please keep doing youtube highlights ^^ thanks

  • @rastabong420
    @rastabong420 4 ปีที่แล้ว

    10:01 more bits

  • @surendravadaparthy2224
    @surendravadaparthy2224 4 ปีที่แล้ว

    What's the theme he is using for vscode ??? Anyone

    • @hb2998
      @hb2998 4 ปีที่แล้ว

      He has a video where he setups up his mac. Its not a simple theme, but lots of different configs and extensions. His instructions are clear and he has most of what you need to type on github so you can just copy and paste his settings, etc.

    • @CodingGarden
      @CodingGarden  4 ปีที่แล้ว +1

      See my vscode settings here: github.com/CodingGarden/vscode-settings#themescolor

  • @ragilburhanudinpamungkas9571
    @ragilburhanudinpamungkas9571 3 ปีที่แล้ว

    wow. its a great explanation, woukd you like to exolain error middleware handler in your project. thank you.

  • @fxstreamer238
    @fxstreamer238 2 ปีที่แล้ว

    why dont you just use feth()?

  • @waves-coder
    @waves-coder 3 ปีที่แล้ว

    Eaat or west coding garden is best

  • @EhSUN37
    @EhSUN37 2 ปีที่แล้ว

    while(true){fetch(url)} and your servers CPU will still be under huge load which is the only thing that matters for ddos attack. your app still needs to check the ip address and the sender is not waiting for response so the speed limit is irrelevant and the CPU is still working with the express-rate-limit library. this is my theory and i dont see why in a hypothetical scenario with lets say a billion request per millisecond your app would survive. you can run that while loop with 100 virtual machines around the world simultaneously .

  • @rsbah
    @rsbah ปีที่แล้ว

    Goddamnit Randy 😂

  • @menjil
    @menjil 4 ปีที่แล้ว +3

    can you share your VS Code theme? :)

    • @derekacosta9840
      @derekacosta9840 4 ปีที่แล้ว

      he uses marketplace.visualstudio.com/items?itemName=nur.just-black, he's addressed that before

  • @DanielSantanaBjj
    @DanielSantanaBjj 3 ปีที่แล้ว

    Please move from Express.js to Fastify and enjoy faster code with little to no changes in your codebase.

  • @thomasersosi4595
    @thomasersosi4595 4 ปีที่แล้ว +1

    About the caching, better store and update the promise in the cache in a synchronous way and then await the cached promise.
    In your current code, if for any reason, the calls to the nasa api take longer to resolve, let's say 10 seconds, then during these 10 seconds, your cache will fail and you will simply forward every single call to the nasa api. So if there's trafic on your api too, you could expire your rate on the nasa api before the cache kicks back in (for 30 seconds, before it may fail you again).
    if (!cachedPromise || Date.now() - 30000 >= cachedTime) {
    const params = ...;
    cachedPromise = axios(`${BASE_URL}${params}`);
    cachedTime = Date.now();
    }
    ...
    const { data } = await cachedPromise;

  • @EhSUN37
    @EhSUN37 2 ปีที่แล้ว

    why dont you just use built-in fetch and always use third party lib to make api requsts? i never understood why

  • @jamesnelson174
    @jamesnelson174 4 ปีที่แล้ว +2

    Hello I love you work. Please develop a twitter clone with react node js.
    Love u.

    • @mayorityz
      @mayorityz 4 ปีที่แล้ว +1

      he has ... th-cam.com/video/JnEH9tYLxLk/w-d-xo.html

  • @jjfattz
    @jjfattz 4 ปีที่แล้ว

    Are you no longer live streaming on YT?

    • @jferris
      @jferris 4 ปีที่แล้ว

      CJ is trying to get partnered on Twitch and so he now only streams there. VODS and edited videos like this will continue to be posted here though.

    • @pranjalagnihotri6072
      @pranjalagnihotri6072 4 ปีที่แล้ว

      He streams on Twitch now. But there is a special stream coming on TH-cam soon

  • @KennAdams
    @KennAdams 4 ปีที่แล้ว

    6272