Content Security Policy explained | how to protect against Cross Site Scripting (XSS)

Поділитися
Вставка
  • Опубліковано 11 січ 2025

КОМЕНТАРІ • 103

  • @jgoebel
    @jgoebel  3 роки тому +11

    What do you think about this video?
    Let me know in the comments below.

    • @rhitmanandhar525
      @rhitmanandhar525 3 роки тому +1

      Loved it. Thank you.

    • @lksjfadlk
      @lksjfadlk 2 роки тому

      Thanks man.

    • @isagive
      @isagive 5 місяців тому

      i needed a good rule for a modern website. not only why, but some kind of common what.

    • @wajeehsaleh6121
      @wajeehsaleh6121 4 місяці тому

      Thanks, man!

  • @truepakistani9604
    @truepakistani9604 2 роки тому +8

    5:48 default-src default of switch statement wow. Explained in just a single statement 👍👍👍

    • @jgoebel
      @jgoebel  2 роки тому

      you're most welcome

  • @Barrosy
    @Barrosy 2 роки тому +3

    Oh my god I was looking all over the web what the meaning behind meta tags and CSP was until I found this video. It's crystal clear to me now. Thank you so much sir.

  • @ash_tray_6
    @ash_tray_6 Рік тому +3

    Thank you! You’re a fantastic teacher.

    • @jgoebel
      @jgoebel  Рік тому

      I'm glad you liked it

  • @noelcovarrubias7490
    @noelcovarrubias7490 3 роки тому

    Thank you. I first read the article but I was a bit confused because I never heard of XSS before so I came here an after the first 3 mins it was crystal clear to me. :D

    • @jgoebel
      @jgoebel  3 роки тому

      thx Noel, I'm glad I could help!

  • @TrumpsOfDesign
    @TrumpsOfDesign Рік тому

    Thanks for explanation. I've searched resources, that can explain me in simple way what is CSP and what it for. After this video I have superficial understanding that is enough for my purposes

  • @stomperhk9107
    @stomperhk9107 3 роки тому +1

    Dude.... Thank's a ton for that objective video.

    • @jgoebel
      @jgoebel  3 роки тому +1

      Glad it was helpful!

  • @hekarboi3656
    @hekarboi3656 2 роки тому +1

    straight to the point, thanks

    • @jgoebel
      @jgoebel  2 роки тому

      you're welcome Hekar

  • @ahmedelgaidi
    @ahmedelgaidi 3 роки тому

    The best as always

    • @jgoebel
      @jgoebel  3 роки тому

      thx Ahmed 👍

  • @ryanvelbon
    @ryanvelbon 2 місяці тому

    Great explanation. Thanks

    • @jgoebel
      @jgoebel  10 днів тому

      Glad you liked it!

  • @emily_tm
    @emily_tm Рік тому

    great explanation, many thanks!

    • @jgoebel
      @jgoebel  11 місяців тому

      Glad you enjoyed it!

  • @superdop1976
    @superdop1976 Рік тому

    Thank you for the great explanation.

  • @ecommercetechbuild1354
    @ecommercetechbuild1354 6 місяців тому

    Wonderful explanation

    • @jgoebel
      @jgoebel  5 місяців тому

      Glad it was helpful!

  • @siyamrubaiyeat5852
    @siyamrubaiyeat5852 2 роки тому +1

    fixing one missing content security policy header is it impacts the entire website?

  • @justtruth5157
    @justtruth5157 2 роки тому

    Very nice video!!!

  • @petrtcoi9398
    @petrtcoi9398 2 роки тому

    Great explanation!

  • @grahamschuckman3483
    @grahamschuckman3483 2 роки тому +1

    Think it would’ve been helpful if you did actually demo a few examples with setting the various directives. Hard to make sense of how each works by just reading the MDN pages that you showed.

  • @MHamidAshraf
    @MHamidAshraf 11 місяців тому

    very nicely explained. thanks. i liked it.

    • @jgoebel
      @jgoebel  11 місяців тому

      Thanks for liking

  • @yasminbrandao3359
    @yasminbrandao3359 2 роки тому

    Nice explanation!
    tks for sharing

    • @jgoebel
      @jgoebel  2 роки тому

      Glad you liked it!

  • @FlanzetaGaming
    @FlanzetaGaming 4 місяці тому

    What do you think about unsafe-inline in style? i have an app with firebase + react... managed to use nonces but in client side rendering, so styles are broken

  • @II22-b2s
    @II22-b2s 6 місяців тому

    on my wordpress website -chrome on my phone says not secure, safari on laptop also says not secure but my SSL certificate is good i checked. also chrome on my laptop doesn't say not secure. I went to inspect >console on website and this error was there but I don't know what it means or where the error is located. The Source Location is blank - "Content Security Policy of your site blocks the use of 'eval' in JavaScript`
    The Content Security Policy (CSP) prevents the evaluation of arbitrary strings as JavaScript to make it more difficult for an attacker to inject unathorized code on your site.
    To solve this issue, avoid using eval(), new Function(), setTimeout([string], ...) and setInterval([string], ...) for evaluating strings.
    If you absolutely must: you can enable string evaluation by adding unsafe-eval as an allowed source in a script-src directive.
    ⚠ Allowing string evaluation comes at the risk of inline script injection.
    1 directive
    Source location Directive Status
    script-src blocked

  • @Rabano94
    @Rabano94 Рік тому

    thank you for the video! super clear!

  • @otiagosantoscode
    @otiagosantoscode 2 роки тому

    I can't figure out how to implement this in practice!! I'm trying to put a google maps on a statistical html page, but it keeps giving a csp warning or the map doesn't load.

  • @sanketmaske74
    @sanketmaske74 3 роки тому

    Very well explained.... thanks

    • @jgoebel
      @jgoebel  3 роки тому

      thx Sanket 👍

  • @dublinnnn
    @dublinnnn 11 місяців тому

    Nicely Explained >>

    • @jgoebel
      @jgoebel  11 місяців тому

      Glad it was helpful!

  • @mohamed.dawoud-usa
    @mohamed.dawoud-usa 2 роки тому

    Thank you for such great video!

  • @codemadesimple1043
    @codemadesimple1043 Рік тому

    Well explained 🎉 Are you from Denmark?

    • @jgoebel
      @jgoebel  Рік тому +1

      no, I'm from Germany

  • @nemisis282
    @nemisis282 6 місяців тому

    So if im understanding this correctly, this just prevents loading scripts, from sources not allowed by the CSP. But an attacker could still use an inline script tag to run any javascript they could fit everything they need within the comment box (assuming stored and in a comment input)?

    • @jacksontarlin6841
      @jacksontarlin6841 4 місяці тому

      CSPs block all inline scripts by default, though if you have specific inline scripts you want to allow you can identify them with hashes or nonces to whitelist with the CSP.

  • @ToadyEN
    @ToadyEN 3 роки тому +1

    Handy overview, now to building a CSP 😳

  • @ryccosn
    @ryccosn Рік тому

    Man you look like young Elon Musk lol. Congratz on the content btw!

  • @1bigslug
    @1bigslug 3 роки тому

    Thank you for the video!!

  • @najaericsson71
    @najaericsson71 8 місяців тому

    Very good!

  • @none0n
    @none0n 2 роки тому

    Great video, do you have a video with some in-depth code examples?

  • @1haker
    @1haker Рік тому

    Great video

    • @jgoebel
      @jgoebel  Рік тому

      Glad you enjoyed it

  • @exd0254
    @exd0254 2 роки тому

    thanks 4 the clear explanation

    • @jgoebel
      @jgoebel  2 роки тому

      Glad it was helpful!

  • @mindcontroller7136
    @mindcontroller7136 2 роки тому

    alert("Thank you, very clear explanation")

    • @jgoebel
      @jgoebel  2 роки тому

      haha nice 👍

  • @israelkayaba6002
    @israelkayaba6002 5 місяців тому

    Thanks bro !

  • @ABDULKARIMHOMAIDI
    @ABDULKARIMHOMAIDI 9 місяців тому

    Thanks man !!

    • @jgoebel
      @jgoebel  7 місяців тому

      you're welcome

  • @chadbosch1110
    @chadbosch1110 3 роки тому

    Hey, Is there a secure way in storing/using JWT with CORS to prevent XSS? Hosted Client and Server Separately so can't do httponly. Just wondering if you have any material I could look at.

    • @jgoebel
      @jgoebel  3 роки тому

      Hi Chad,
      if you store a JWT inside of a cookie then your api-gateway needs a strict CORS policy and ideally HttpOnly and Secure cookies to prevent CSRF. However, CORS and cookies do not sufficiently protect you against XSS. Because with XSS some malicious code is running in browser. So in case the JWT is stored in a cookie - even if it is HttpOnly - the attacker can still make authenticated requests. The only "advantage" over using local storage here is that the attacker would need to run the full attack over the browser. This is still bad and the attacker can do pretty much anything he wants to do but at least the attacker does not get access to the actual token. So while the attacker could still do everything via the browser, it would be slightly harder.
      To protect against XSS, a Content Security Policy is very useful as well as sanitizing user input when it is sent to the server. I think I don't really have a dedicated video that yet.

  • @ukaszkiepas57
    @ukaszkiepas57 6 місяців тому

    thank you buddy ! :)

    • @jgoebel
      @jgoebel  5 місяців тому

      You're most welcome!

  • @ashwinkumar4168
    @ashwinkumar4168 2 роки тому

    • @Barrosy
      @Barrosy 2 роки тому

      Not literally like this. You have to replace and with your own directive and value you would like to use. Also make sure to separate these two placeholders with a space. So an example would be

  • @johnnyforget1494
    @johnnyforget1494 3 роки тому

    So I've read that putting the CSP in html meta tags isn't super effective and frame ancestors can't be used. What are your thoughts on this?

    • @jgoebel
      @jgoebel  3 роки тому

      Hi Johnny, here is a really nice answer for your question: webmasters.stackexchange.com/questions/104857/when-should-i-not-to-use-page-meta-security-headers

  • @yuvrajagarkar8942
    @yuvrajagarkar8942 3 роки тому

    but what if some hacker sniffs the traffic and manipulates the request and response headers ? , is that possible if used https ?

    • @jgoebel
      @jgoebel  3 роки тому +1

      Hi Yuvraj, https is TLS over HTTP and all headers that can be encrypted, are encrypted (hostname / IP headers are not encrypted because otherwise routing of the package would be impossible: stackoverflow.com/a/187679/2328833)

  • @sauravkarmakar1811
    @sauravkarmakar1811 3 роки тому

    I used csp script-src to self..and in console it showing many script error...how can i make it accept all my script ?

    • @jgoebel
      @jgoebel  3 роки тому

      Hi Saurav, while you could allow any script this would defeat the purpose of having a CSP in the first place. So I figure the only way would be to explicitly add the sources where you want to load scripts from. If you specify self, then this means that you only allow scripts to come from the origin where the webpage was originally loaded from

    • @sauravkarmakar1811
      @sauravkarmakar1811 3 роки тому

      @@jgoebel how can i make it accept the scripts that i have written on some script tags inside some pages?

  • @starindiangamer1322
    @starindiangamer1322 3 місяці тому +1

    alert('Hello World') only hello world

  • @Raj0x01
    @Raj0x01 2 роки тому

    Can anyone explain: "Browsers that don't support CSP still work with servers that implement it" ?

    • @jgoebel
      @jgoebel  2 роки тому +1

      no because the browser enforces the CSP. But pretty much every modern browser supports CSP these days

    • @Raj0x01
      @Raj0x01 2 роки тому

      Thanks

  • @neeerajtk
    @neeerajtk Рік тому

    Can we set CSP in AWS?

    • @jgoebel
      @jgoebel  Рік тому

      CSP is independent of any cloud service

  • @markomilardic
    @markomilardic Рік тому

    Great :)

  • @27sosite73
    @27sosite73 Місяць тому

    thank you

    • @jgoebel
      @jgoebel  10 днів тому

      You're welcome

  • @yamansharma9344
    @yamansharma9344 3 роки тому

    I guess I have seen cross site scripting policies added in web.config files 🤔

    • @jgoebel
      @jgoebel  3 роки тому +1

      could be. Some servers allow you to just pass a config file and then the server will generate the headers for you

  • @panchalnitin
    @panchalnitin 2 роки тому

    Write down the code mentioned in the video, and then try to edit the comment, UA-cam will delete it!

    • @jgoebel
      @jgoebel  2 роки тому

      probably because UA-cam thinks that you are trying to do a stored cross site scripting (XSS) attack 😁

  • @KareenKreis-q9c
    @KareenKreis-q9c 4 місяці тому

    Rebekah Prairie

  • @mr.RAND5584
    @mr.RAND5584 3 місяці тому

    alert('test')

  • @nithiyashrees3456
    @nithiyashrees3456 4 місяці тому

  • @freewhitesparrow6205
    @freewhitesparrow6205 Рік тому

    Is it Elon Mask?

  • @nIrUbU01
    @nIrUbU01 2 роки тому

    doesnt really explain anything, all youre saying is "if you have this header youre protected" - great.

  • @nithiyashrees3456
    @nithiyashrees3456 4 місяці тому

    dd

  • @BearkFearGamer
    @BearkFearGamer Рік тому

    alert(document.cookie)