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

Поделиться
HTML-код
  • Опубликовано: 15 янв 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 6 месяцев назад

      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

  • @hekarboi3656
    @hekarboi3656 2 года назад +1

    straight to the point, thanks

    • @jgoebel
      @jgoebel  2 года назад

      you're welcome Hekar

  • @stomperhk9107
    @stomperhk9107 3 года назад +1

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

    • @jgoebel
      @jgoebel  3 года назад +1

      Glad it was helpful!

  • @ryanvelbon
    @ryanvelbon 2 месяца назад

    Great explanation. Thanks

    • @jgoebel
      @jgoebel  14 дней назад

      Glad you liked it!

  • @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

  • @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!

  • @superdop1976
    @superdop1976 Год назад

    Thank you for the great explanation.

    • @jgoebel
      @jgoebel  Год назад

      You are welcome!

  • @emily_tm
    @emily_tm Год назад

    great explanation, many thanks!

    • @jgoebel
      @jgoebel  11 месяцев назад

      Glad you enjoyed it!

  • @petrtcoi9398
    @petrtcoi9398 2 года назад

    Great explanation!

  • @Rabano94
    @Rabano94 Год назад

    thank you for the video! super clear!

  • @ecommercetechbuild1354
    @ecommercetechbuild1354 6 месяцев назад

    Wonderful explanation

    • @jgoebel
      @jgoebel  5 месяцев назад

      Glad it was helpful!

  • @MHamidAshraf
    @MHamidAshraf 11 месяцев назад

    very nicely explained. thanks. i liked it.

    • @jgoebel
      @jgoebel  11 месяцев назад

      Thanks for liking

  • @israelkayaba6002
    @israelkayaba6002 5 месяцев назад

    Thanks bro !

  • @yasminbrandao3359
    @yasminbrandao3359 2 года назад

    Nice explanation!
    tks for sharing

    • @jgoebel
      @jgoebel  2 года назад

      Glad you liked it!

  • @mohamed.dawoud-usa
    @mohamed.dawoud-usa 2 года назад

    Thank you for such great video!

  • @sanketmaske74
    @sanketmaske74 3 года назад

    Very well explained.... thanks

    • @jgoebel
      @jgoebel  3 года назад

      thx Sanket 👍

  • @siyamrubaiyeat5852
    @siyamrubaiyeat5852 2 года назад +1

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

  • @ABDULKARIMHOMAIDI
    @ABDULKARIMHOMAIDI 9 месяцев назад

    Thanks man !!

    • @jgoebel
      @jgoebel  7 месяцев назад

      you're welcome

  • @1bigslug
    @1bigslug 3 года назад

    Thank you for the video!!

    • @jgoebel
      @jgoebel  3 года назад

      My pleasure!

  • @exd0254
    @exd0254 2 года назад

    thanks 4 the clear explanation

    • @jgoebel
      @jgoebel  2 года назад

      Glad it was helpful!

  • @justtruth5157
    @justtruth5157 2 года назад

    Very nice video!!!

  • @ahmedelgaidi
    @ahmedelgaidi 3 года назад

    The best as always

    • @jgoebel
      @jgoebel  3 года назад

      thx Ahmed 👍

  • @najaericsson71
    @najaericsson71 8 месяцев назад

    Very good!

    • @jgoebel
      @jgoebel  7 месяцев назад

      Thanks!

  • @27sosite73
    @27sosite73 Месяц назад

    thank you

    • @jgoebel
      @jgoebel  14 дней назад

      You're welcome

  • @ukaszkiepas57
    @ukaszkiepas57 6 месяцев назад

    thank you buddy ! :)

    • @jgoebel
      @jgoebel  5 месяцев назад

      You're most welcome!

  • @1haker
    @1haker Год назад

    Great video

    • @jgoebel
      @jgoebel  Год назад

      Glad you enjoyed it

  • @dublinnnn
    @dublinnnn 11 месяцев назад

    Nicely Explained >>

    • @jgoebel
      @jgoebel  11 месяцев назад

      Glad it was helpful!

  • @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.

  • @codemadesimple1043
    @codemadesimple1043 Год назад

    Well explained 🎉 Are you from Denmark?

    • @jgoebel
      @jgoebel  Год назад +1

      no, I'm from Germany

  • @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.

  • @ToadyEN
    @ToadyEN 3 года назад +1

    Handy overview, now to building a CSP 😳

  • @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

  • @none0n
    @none0n 2 года назад

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

  • @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.

  • @ryccosn
    @ryccosn Год назад

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

  • @markomilardic
    @markomilardic Год назад

    Great :)

  • @neeerajtk
    @neeerajtk Год назад

    Can we set CSP in AWS?

    • @jgoebel
      @jgoebel  Год назад

      CSP is independent of any cloud service

  • @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

  • @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?

  • @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)

  • @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

  • @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

  • @mindcontroller7136
    @mindcontroller7136 2 года назад

    alert("Thank you, very clear explanation")

    • @jgoebel
      @jgoebel  2 года назад

      haha nice 👍

  • @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.

  • @starindiangamer1322
    @starindiangamer1322 3 месяца назад +1

    alert('Hello World') only hello world

  • @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

  • @KareenKreis-q9c
    @KareenKreis-q9c 4 месяца назад

    Rebekah Prairie

  • @panchalnitin
    @panchalnitin 2 года назад

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

    • @jgoebel
      @jgoebel  2 года назад

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

  • @mr.RAND5584
    @mr.RAND5584 4 месяца назад

    alert('test')

  • @nIrUbU01
    @nIrUbU01 2 года назад

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

  • @nithiyashrees3456
    @nithiyashrees3456 4 месяца назад

  • @freewhitesparrow6205
    @freewhitesparrow6205 Год назад

    Is it Elon Mask?

  • @nithiyashrees3456
    @nithiyashrees3456 4 месяца назад

    dd

  • @BearkFearGamer
    @BearkFearGamer Год назад

    alert(document.cookie)