Coding a Web Server in 25 Lines - Computerphile

2024 ж. 21 Ақп.
314 877 Рет қаралды

Just how simple can a web server be? Laurence Tratt, Shopify / Royal Academy of Engineering Research Chair in Language Engineering at Kings College London builds it up.
More about Laurie: bit.ly/C_LaurenceTratt
/ computerphile
/ computer_phile
This video was filmed and edited by Sean Riley.
Computer Science at the University of Nottingham: bit.ly/nottscomputer
Computerphile is a sister project to Brady Haran's Numberphile. More at www.bradyharanblog.com
Thank you to Jane Street for their support of this channel. Learn more: www.janestreet.com

Пікірлер
  • The joy of modern programming languages. Listening on a socket in just one line.

    @AndreDeLimburger@AndreDeLimburger2 ай бұрын
    • yep.. that itself was the main trick... that one line.. tcp listen..

      @sumantagogoi@sumantagogoi2 ай бұрын
    • java had that in 1995... ServerSocket for those asking After looking into c it has Socket.h so even in c its there...

      @aawwmm@aawwmm2 ай бұрын
    • It's not a programming language, it's the set of libraries it comes with. I think you are confusing two things here.

      @dexio85@dexio852 ай бұрын
    • The standard libraries that come with the language, are they considered part of the language?

      @AndreDeLimburger@AndreDeLimburger2 ай бұрын
    • It's two syscalls to Linux kernel too. Not so heavy to implement that in any language that allows to do syscalls.

      @rogo7330@rogo73302 ай бұрын
  • I loved Laurie’s smile each time he wrote something he knew was absolutely dodgy!

    @samwalker4438@samwalker44382 ай бұрын
    • I write webservices for a living and I have that same energy when realizing I can cheat the system and completely ignore convention.

      @AdamSpurgin@AdamSpurgin2 ай бұрын
  • He is a gift that keeps on giving A fundamental explanation of making a simple webserver in 25 LOC for easy understanding of its components A lecturer that 1. Uses Rust 2. Uses a framework laptop 3. USES NEOVIM very nice

    @uuu12343@uuu123432 ай бұрын
    • And runs on OpenBSD !

      @fractalphilosophorum9405@fractalphilosophorum94052 ай бұрын
    • And uses Firefox

      @moose-1@moose-12 ай бұрын
    • True

      @slendi9623@slendi96232 ай бұрын
    • And uses gruvbox

      @bhavyakukkar@bhavyakukkar2 ай бұрын
    • he's too based

      @PotatoCider@PotatoCider2 ай бұрын
  • Programming Rust on a Framework laptop running OpenBSD. Absolutely based.

    @wildwestrom@wildwestrom2 ай бұрын
    • neovim and looks like alacritty as well

      @gg-gn3re@gg-gn3re2 ай бұрын
    • I fully expected Python, the Visual Basic of the modern age. It's the only reason I clicked the link, to see if I was right, since for any modern environment you can write a "web server" with three statements: import web library, set default response string, invoke the listener.

      @udasai@udasaiАй бұрын
    • incredibly based.

      @jumbledfox2098@jumbledfox2098Ай бұрын
    • you all sound like reddit and hn nerds absolutely cooming over a dude's setup.

      @hachikuku5226@hachikuku5226Ай бұрын
    • @@hachikuku5226That's the point, poindexter.

      @gg-gn3re@gg-gn3reАй бұрын
  • Honestly I didn't expect the fundamentals of HTTP to be so easy. This sort of "from-the-ground-up" approach was really fun to watch!

    @OldShatterham@OldShatterham2 ай бұрын
    • email is of similar complexity.

      @GottZ@GottZ2 ай бұрын
    • Sure, when you have libraries in place that do all the actual on the ground stuff we don't see in the video.

      @Faladrin@Faladrin2 ай бұрын
    • @@Faladrinreally the only library he used was the tcplistener implementing the protocol was all up to him.

      @collinswisher6566@collinswisher65662 ай бұрын
    • There's a degree of knowing I.T. being seen as knowing how to use Word and Excel. Been this way for a couple of decades at least. Very few people seem to know the basics.

      @beentheredonethatunfortunately@beentheredonethatunfortunatelyАй бұрын
  • I had this professor for a few lectures in my undergrad during covid. He was very enthusiastic, funny and explained things really well. He was also was explaining concepts with his neovim + rust setup. Happy to see him again on computerphile!

    @vercolit@vercolit2 ай бұрын
  • The funny thing is, there's an async tutorial in the Rust Book that explains how to use threads with a web server do handle 4 workers. If I remember correctly it's not even 10 lines more. Would've been a cool addition!

    @NetherFX@NetherFX2 ай бұрын
    • which rust book?

      @Gnarkson@Gnarkson2 ай бұрын
    • @@Gnarksonshould be chapter 20 in "the book" (referring to the official book)

      @NetherFX@NetherFX2 ай бұрын
    • @@NetherFX thanks

      @Gnarkson@Gnarkson2 ай бұрын
  • Rust user? Framework laptop owner? Based prof.

    @dylanmeeks54@dylanmeeks542 ай бұрын
    • Bet prof use Arch too btw.

      @KarunaMurti@KarunaMurti2 ай бұрын
    • Based on what?

      @Lb8068@Lb80682 ай бұрын
    • Rust user, framework laptop and vim user. Mega based

      @beatboy6690@beatboy66902 ай бұрын
    • Wonder when he's getting his bottom surgery.

      @toby2581@toby25812 ай бұрын
    • And neovim and firefox

      @UnevenMike@UnevenMike2 ай бұрын
  • You can tell this guy loves what he does. Thanks for the video!

    @nullptr.@nullptr.2 ай бұрын
    • highly paid serf is a happy and productive serf... : )

      @Microphunktv-jb3kj@Microphunktv-jb3kj2 ай бұрын
  • You can build the web server in one line of code if you put your 25 lines of code in a library. 😂

    @vincei4252@vincei42522 ай бұрын
    • or write all of the code in one line, even if we dont strip down the server to the bare minimum, a full server is still just 1 line of code if you format it in such a way that its all on the same line.

      @ai-spacedestructor@ai-spacedestructor2 ай бұрын
    • @@ai-spacedestructor isn't every application just one line of code/one function? main() {... } It's turtles all the way down.

      @vincei4252@vincei42522 ай бұрын
    • Low level programmer:

      @mail2ajm@mail2ajm2 ай бұрын
    • @@vincei4252 depends on the programming language, im not too familiar with rust to know how that is exactly.

      @ai-spacedestructor@ai-spacedestructor2 ай бұрын
    • Nodejs😂

      @zfold4702@zfold47022 ай бұрын
  • 'I am abusing this monstrously.' == always the sign of well-written code.

    @halfsourlizard9319@halfsourlizard93192 ай бұрын
    • “What I’m doing is a crime against silicon” = writing some of the most ingenious code possible to write

      @TAP7a@TAP7a2 ай бұрын
    • No, not even close

      @phill6859@phill68592 ай бұрын
    • ​@@TAP7aif you think it's ingenuous then it's more about what you think than the code itself.

      @phill6859@phill68592 ай бұрын
    • Genius or, more likely, brittle code only workable by the original author. Could be either. Could be both.

      @kevinmcdonough9097@kevinmcdonough90972 ай бұрын
    • @@kevinmcdonough9097 Oh, very probably both 😜

      @halfsourlizard9319@halfsourlizard93192 ай бұрын
  • Great format for explaining web servers. Those 17 minutes flew by

    @TheHenrik225@TheHenrik2252 ай бұрын
  • Don't know if it's a coincidence, but the code really reminded of the one in the first chapters of the Rust Book - Building a Multithreaded Web Server. I've just been reading it a couple of weeks ago, and can definitely recommend taking a look if you're interested! Though it's worth mentioning that the code does contain some difficult Rust

    @pmmeurcatpics@pmmeurcatpics2 ай бұрын
    • Difficult Rust can't be as bad as "modern" C++ with templates and meta-programming? Can it?

      @vincei4252@vincei42522 ай бұрын
    • @@vincei4252 unfortunately I can't make this comparison since I barely know C++, let alone "modern" C++. Rust does meta-programming using things called macros - from what I've heard, they're quite powerful and reasonably easy to understand? Though they're definitely WIP, so there're a couple of rough edges here and there. There was a talk recently, called something like "Anything you can do, I can do it worse with macro_rules!", where the host showed a somewhat extreme example - a macro they created that can automatically create a fully functional XML representation of a token tree of Rust code

      @pmmeurcatpics@pmmeurcatpics2 ай бұрын
    • This code will be very similar on any language, really. Even the ones with no sugar added.

      @framegrace1@framegrace12 ай бұрын
    • @@vincei4252they’re as bad as each other syntactically, Rust is probably a little more coherent, but the precision demanded by the Rust compiler is simultaneously much more reassuring and frustrating. Whereas modern C++ is less coherent, but quicker to get running, but only if you accept all the footguns that come with it.

      @TAP7a@TAP7a2 ай бұрын
  • Fantastic content, that's what I was always missing in the "basic" server setup - the way the server actually functions!

    @Lurco8@Lurco82 ай бұрын
  • Even before the rest was completed, just the bit that sent back "Hello Computerphile" was totally amazing to me.

    @lanatrzczka@lanatrzczka2 ай бұрын
  • This was awesome. I was a programmer, now a DBA. Having someone explain code like this is what a learning experience should be.

    @Sonex1542@Sonex15422 ай бұрын
  • I love this guy's computherphile videos! He's always very clear and bring practical stuff.

    @joaopedrorocha4790@joaopedrorocha47902 ай бұрын
  • Nice! One of my first projects was writing my own webserver in Java, later added PHP support and used it to host my website.

    @linuxguy1199@linuxguy11992 ай бұрын
    • How did making a Java web server go? Any tips?

      @andiuptown1711@andiuptown1711Ай бұрын
  • Like all computerphile video of Dr Laurence Tratt. Great work!

    @pedroth3@pedroth32 ай бұрын
  • Awesome video, great job at explaining the questions asked. Absolute chad energy Laurence Please do more videos like this!

    @sneaksneak6522@sneaksneak65222 ай бұрын
  • TELESCOPE USED!! LETS GOOOOOOO!!!!!

    @teej_dv@teej_dv2 ай бұрын
    • TELESCOPE!!!

      @mjhika@mjhika2 ай бұрын
    • wait arent you teej the creator of telescope but you also stream on twitch?

      @Pbertrand_dev@Pbertrand_dev2 ай бұрын
    • Telescope, Lets GOOOOOO

      @n0kodoko143@n0kodoko1432 ай бұрын
    • timestamp 1:51 woooooooooooo

      @RenXZen@RenXZen2 ай бұрын
    • 🔭 NeoVim without Telescope LITERALLY unusable 🔭

      @DamnitDutch@DamnitDutch2 ай бұрын
  • this channel is fire tbh

    @comosaycomosah@comosaycomosah2 ай бұрын
  • Great video! If you want to remove the duplicate INSERT mode you can add: set noshowmode into your config.

    @smccrode@smccrode2 ай бұрын
  • it is important to remember that whichever end you are writing, you need to consider the other end a bad actor or buggy AF.

    @Norman_Fleming@Norman_Fleming2 ай бұрын
    • That's what he's saying. He's ignoring any safety concerns for this example like error handling or exploit fixing

      @Ebiko@Ebiko2 ай бұрын
  • This was really nice! I'm so used to getting everything low-level served to you as a library call when you actually need so little of the library you could just do the thing yourself.

    @Simon-ir6mq@Simon-ir6mq2 ай бұрын
  • I always recommend everyone trying to one up their programming skill is to create web server using the HTTP spec. It really teaches a lot about what programming is. There is a document that you have to follow and the expected behaviour, how you handle edge cases, how you optimize some algorithm, etc. Why HTTP and not anything else is jusy because the sheer number of implementation available that you can use as a reference.

    @YandiBanyu@YandiBanyu2 ай бұрын
    • interesting will try soon😂

      @laptoprelaks@laptoprelaks2 ай бұрын
  • Best channel in you tube ... i am surprised by how well and simply everything is explained. I don't use rust but i already figured out how to do it in Python!

    @gerokatseros@gerokatseros2 ай бұрын
  • Wow, this is exactly what I needed. You're a lifesaver!

    @MyCodingDiarie@MyCodingDiarie2 ай бұрын
  • awesome. even though i am a fullstack dev, this seemed always daunting and i never wanted to look into it but its actually super super easy. really well made!

    @slluxxx@slluxxx2 ай бұрын
  • "In 25 lines" is doing a lot of heavy lifting with those libraries wrapping so much networking code.

    @Meow_YT@Meow_YT2 ай бұрын
    • "Those libraries" he's using one library and it's the relatively tiny Rust standard library. Try writing to stdout in less than 25 lines without calling 50 lines of C or another binary that does just that.

      @CramBL@CramBL2 ай бұрын
    • ​@@CramBLNot wrong in spirit, but "call the SYS_WRITE syscall" is like 5 lines of assembly, or a hardware serial port equivalent in low-level systems

      @zerker2000@zerker20002 ай бұрын
    • ​@@CramBLOh stop. It's just a bait title. So much is going on behind the scenes. People slowly forgetting how much work has been done by others in the past, and it boils down to "in 25 lines". It's a bit tiring. And it's all going to be forgotten if anything major happens and people don't know how to fix the problems. Cos all we'll have are the imports and no one knows the magic inside. Just 1 billion lazy devs that know the 25 lines.

      @Meow_YT@Meow_YT2 ай бұрын
    • @@CramBL yea and try doing it without a kernel, that's even more lines!

      @gg-gn3re@gg-gn3re2 ай бұрын
    • Libraries like... the kernel??? That's where the whole IP stack and sockets are implemented. Even in assembly this code wouldn't be massively longer.

      @habl844@habl8442 ай бұрын
  • Glad to see Rust having reached a point where it's no longer "Building a web server in Rust" but just building a web server, oh and btw we chose this whatever language because it's mainstream enough and understandable enough to not take away from the main point of the lesson.

    @VivekYadav-ds8oz@VivekYadav-ds8oz2 ай бұрын
  • Great video! Just a few weeks ago my collegues and I were chatting about a web project I was working on, and the question of "How exactly does a web server even work?" came up. At the time we didn't look too deep into it, since we are all high level programmers who don't remember our college days. This really pointed out how simple you can really do it!

    @TallMoose@TallMoose2 ай бұрын
  • Didn't expect the video to include the Rust programming language. As always valuable materials presented for pure knowledge:)

    @MegaAresik@MegaAresik2 ай бұрын
  • Learnt something nice today! Thanks for uploading, Lastly the authors enthusiasm regarding his craft was quite infectious.

    @ayanSaha13291@ayanSaha13291Ай бұрын
  • Absolutely amazing! Thank you very much, Mr. Tratt.

    @nelioasousa@nelioasousaАй бұрын
  • Great to see someone coding in rust! Thank you. 🙏🏻

    @petersuvara@petersuvara2 ай бұрын
  • Me expecting him to run `npx http-server index.html` and be done with it 😆 Great video, thanks Laurence!

    @AliciaSykes@AliciaSykes2 ай бұрын
    • 25 lines of code plus 4.6 gigs of node packages for some reason 😂

      @philrod1@philrod1Ай бұрын
  • @ThePrimeTime needs to see this

    @daze8410@daze84102 ай бұрын
    • the "I'm abusing this monstrously - agen"

      @taylorswe@taylorswe2 ай бұрын
    • I think he watched it on today’s stream, we’ll see if it gets posted.

      @romevang@romevang2 ай бұрын
  • Although my English is not good, I spent an afternoon watching and learning from this video. This video is really simple and easy to understand for beginners like me.

    @user-ut2jy4fe2m@user-ut2jy4fe2m2 ай бұрын
  • I love listening to these smart people it's so motivation and takes you into the presence, sharpening your mind..

    @dehrk9024@dehrk9024Ай бұрын
  • You didn't have to flex your vim skillz that hard lmao what a legend. Also noticed the framework laptop

    @SrFrancia0@SrFrancia02 ай бұрын
  • This guy's the kinda professor I wanted all my academic life! nvim, rust in linux on a framework laptop! Be my guide sensei 😭❤

    @DevduttShenoi@DevduttShenoi2 ай бұрын
    • Pretty sure he was running FreeBSD, based on the browser's "user-agent", not Linux.

      @wbfaulk@wbfaulk2 ай бұрын
    • OpenBSD @@wbfaulk

      @gspapp@gspapp2 ай бұрын
    • ​@@wbfaulk OpenBSD, even

      @smikkelbeer6352@smikkelbeer63522 ай бұрын
    • @@smikkelbeer6352 dammit

      @wbfaulk@wbfaulk2 ай бұрын
  • no way y’all happened to upload the exact type of thing i’ve been looking for lately

    @Vl_OLET@Vl_OLET2 ай бұрын
  • Loved this episode!. Thanks.

    @AndrewTSq@AndrewTSq2 ай бұрын
  • I did the same project for a distributed systems course. What a great small project.

    @MJ-xh8co@MJ-xh8co2 ай бұрын
  • One difficulty with supporting multiple sites in a webserver is that you have to support it using both raw HTTP ... and TLS SNI (ServerName Indication) and ideally TLS ESNI (Encrypted SNI)

    @sundhaug92@sundhaug922 ай бұрын
  • "you could call it a good listener," you startled a laugh out loud out of me:) Thanks.

    @PatrickPoet@PatrickPoetАй бұрын
  • Love seeing the framework laptop!

    @marcruijs1039@marcruijs10392 ай бұрын
  • Thank you! You gave me courage!

    @addas4@addas42 ай бұрын
  • Rust and Neovim, I like your style.

    @HarryHelsing@HarryHelsing2 ай бұрын
    • Can't get used to Rust syntax.

      @PbPomper@PbPomper2 ай бұрын
  • They could do a http path traversal, e.g.: [address to server]/../../../../etc/passwd

    @DoRullings@DoRullings2 ай бұрын
    • I think you could just start with // to get to the root

      @Turalcar@Turalcar2 ай бұрын
    • He acknowledged this insecurity.

      @sofianikiforova7790@sofianikiforova77902 ай бұрын
    • @@sofianikiforova7790 Yes he does. I only showed one way to access directories you don't want other people to access. It wasn't meant as a "gotcha" moment. 😉

      @DoRullings@DoRullings2 ай бұрын
    • ​@@Turalcar I'm not sure if it would have worked on that server, tbh. In any case, I would have written the comment in the same way as it makes it easier to read/recognize, and KZhead comments are not suitable for this as anything resembling a URL is easily caught by the scam filter.

      @DoRullings@DoRullings2 ай бұрын
  • I like this transition. We went from Perl one liners or insane algorithimic one liners to now people applying creativity to web servers and api designs. I was just thinking about how computer science is getting boring nowadays but I’m glad that there’s still a few breaths left until it totally becomes the next accounting-esque profession.

    @yugshende3@yugshende32 ай бұрын
    • I’m not sure it will ever be an accounting-esque profession. The amount of creativity involved and flexibility of tooling, and solutions are always going to be more open ended than accounting.

      @sofianikiforova7790@sofianikiforova77902 ай бұрын
    • @@sofianikiforova7790 I agree but I think the creativity part of it is tied behind the language. once people can code in their native languages I think more or less the syntactical accuracy will become a matter of just putting the right structure in place. So, more or less like accounting. Similarly how people still do creative stuff with accounting (eg new ways of building ledgers like crypto) but the basic premise has converged onto a more or less singular agreed-upon convention. Computer Science was fighting that premise at its very core I think with several languages and several programming paradigms. But with the advent of AI the programming paradigms or "code structure" might become meaningless. A computer for example doesn't care if the JS file is minified or beautified. We do.

      @yugshende3@yugshende32 ай бұрын
  • I don't know why, but I just thought about how to make a web server and this video came up. What a coincidence!

    @rkin2009@rkin20092 ай бұрын
  • Thanks for the beginner friendly Rust tutorial!

    @jvoynar5826@jvoynar58262 ай бұрын
  • You have taught more about general services (it doesn’t have to be for web) than college ever did for me

    @patrickle2500@patrickle25002 ай бұрын
  • Neovim for the win! That's some serious productivity!

    @VaughnKottler@VaughnKottler2 ай бұрын
  • Kudos on using a part oh The VIM family! I also really need to look more at rust 🤣👍

    @polarfamily6222@polarfamily6222Ай бұрын
  • Great video, loved it!

    @SoreBrain@SoreBrain2 ай бұрын
  • Crazy to think we've abstracted all the low level aspects for creating a web server. Just going through all the standards/protocols invented to get this web server going that looks simplistic would take a lot of computer science courses to get a deep understanding of it all.

    @ddude27@ddude272 ай бұрын
  • 0:34 I am currently waist-deep in the Apache internals at work, so I can attest to this.

    @bersl2@bersl22 ай бұрын
  • Oauth clients are an incredibly useful implementation of these

    @metcaelfe@metcaelfeАй бұрын
  • I wish I could give this video more than one like. It's that good!

    @MyCodingDiarie@MyCodingDiarie2 ай бұрын
  • First of all, fantastic video. It's amazing how you managed to simplify such a complex topic. Second of all - as a software engineer - your corner cutting made my skin crawl. 😅

    @tmnt9001@tmnt90012 ай бұрын
  • simple and to the point. nice!

    @chyldstudios@chyldstudios2 ай бұрын
  • Recreated it in python and learned a lot. Thank You!

    @deadlock107@deadlock1072 ай бұрын
  • ive always loved how "gobblygoop" is an official industry term

    @shad0wman@shad0wmanАй бұрын
  • You can make a secure web site with about 60 lines of C that is extensible. Did this 28 years ago and was used as part of one the the first internet proxy firewalls.

    @codewizard58@codewizard582 ай бұрын
  • Remember the good old days when writing a 1 line web server in perl was the rage.

    @Lion_McLionhead@Lion_McLionhead2 ай бұрын
  • Lovely sample. I used to do all this with a shell script. Same approach, and potentially quite safe.

    @wcheswick@wcheswick2 ай бұрын
  • Love that framework laptop you got there ;) got one too.

    @kil98q@kil98q2 ай бұрын
  • Realizing that someone needed to program the libraries you were using feels like a lost art. We stand on the shoulder of giants.

    @dougclendening5896@dougclendening58962 ай бұрын
  • Love seeing Rust on the channel! Not a big fan of his variable names though.

    @jearl961@jearl961Ай бұрын
  • Using a slightly different one eh? I checked, and I spot some OpenBSD httpd! High Five Laurence Tratt! (And OpenBSD does run very nice on the Framework laptop. :D )

    @danielAgorander@danielAgorander2 ай бұрын
  • Great presentation! I came for the httpd teaser, I left with my first appreciation of Rust.

    @speakertoanimals@speakertoanimals2 ай бұрын
  • Love the Framework laptop!

    @taylor1038@taylor10382 ай бұрын
  • Uses Rust and Nvim w/ gruvbox colours? Absolutely based professor.

    @damirparipovic5179@damirparipovic51792 ай бұрын
  • love your shirt pattern.

    @shoaib_zubair@shoaib_zubair2 ай бұрын
  • While its nice to see this broken down for people, I also want to stress how dangerous this is without proper security and exploit handling. It is almost always better to implement some well known http server library if you need this functionality. It's not just handling files to have basic security here. There are all sorts of RCE via injection you have to be concerned with, etc, depending on which language you implement this in. However, this is a great exercise for learning this!

    @jslay88@jslay882 ай бұрын
  • Very nice. Loved the video,

    @GoKotlinJava@GoKotlinJava2 ай бұрын
  • 10:50 you could use the split_whitespace() function 😊

    @FabianVilersBe@FabianVilersBe2 ай бұрын
  • Rust mentioned, uses Framework. Instant like.

    @varantavers@varantavers2 ай бұрын
  • Good to see another openBSD enjoyer :)

    @groverphonic@groverphonic2 ай бұрын
  • I love production ready code 🙂

    @coutinhotiago@coutinhotiagoАй бұрын
  • Very nice explanation.

    @RoyRope@RoyRope2 ай бұрын
  • Brilliant!

    @landspide@landspide2 ай бұрын
  • I too made a http server, which was just a todo api app. Learnt how http request actually works and parsing them. Fun project, got to learn a lot. Wanted to learn on the security part of this, any insights or references to look into?

    @pixalquarks4623@pixalquarks46232 ай бұрын
  • Very nice! thank you

    @rtdietrich@rtdietrichАй бұрын
  • - How many holes and edge cases do you want? - YES

    @conodigrom@conodigromАй бұрын
  • That was very clear

    @itwsntme@itwsntmeАй бұрын
  • What I want to know it, how to connect a TCP socket to a serial COM port and then write a crude web server on an Arduino to simplify remote connections to embedded projects.

    @BillySugger1965@BillySugger1965Ай бұрын
  • 11:58 this path traversal makes me cry

    @slendi9623@slendi96232 ай бұрын
  • Thank you for this. I work for a hosting provider and deal with Web Services of all kinds so It's really cool get an idea of how it all works under the hood. But for real though, you need to iron that shirt! 😅🤣😂

    @dbreise@dbreise2 ай бұрын
  • Laurence Tratt and @Computerphile, I hope you'll soon make a video explain how an why this naive server is so damn *vulnerable* to many sorts of attacks, particularly BF, DoS and LL attacks.

    @emjizone@emjizone2 ай бұрын
  • I knew almost all, and I detest Rust, but I just learned the proper layout of the server response!

    @rursus8354@rursus83542 ай бұрын
  • The Go standard library says hello :)

    @tnetroP@tnetroP2 ай бұрын
  • Thank you a lot!

    @EmanuelRaziel@EmanuelRaziel28 күн бұрын
  • it's probably worth noting that even after fixing the path traversal attack, there are a number of other vulnerabilities in this implementation that make it very unlikely for me to recommend it for even small-scale deployments. just off the top of my head: rate limiting of any kind is nonexistent, resource exhaustion is trivially possible by sending an arbitrarily large request, any client can take down the server by requesting a nonexistent file, etc.. there are also a number of more subtle path traversals; even if you check for paths that contain `..` segments, you still have to account for paths that start with two slashes, etc..

    @Eunakria@Eunakria2 ай бұрын
  • Legend!!

    @incredifall@incredifall2 ай бұрын
  • Alright, ship it! We'll send out a patch later if we can be bothered. Now write a web broswer in 51 lines. Release is on friday afternoon, chop chop.

    @tramsgar@tramsgar2 ай бұрын
  • It is an interesting video thanks for sharing.

    @abcde...7960@abcde...796027 күн бұрын
KZhead