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

Поделиться
HTML-код
  • Опубликовано: 11 сен 2024
  • 🔥More exclusive content: productioncode...
    Twitter: / _jgoebel
    Blog: productioncode...
    Website: jangoebel.com
    In this video, we cover what Content Security Policy (CSP) is, why you need and how it protects against Cross Site Scripting. We look at Content Security Policy directives, what they do and how you can leverage them for your application. The main goal of Content Security Policy is to protect against Cross Site Scripting attacks. It does so by limiting the origins and urls from which certain assets (e.g. fonts, images, scripts) can be loaded. Content Security Policy can help to mitigate against stored or reflected XSS attack vectors.

Комментарии • 98

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

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

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

      Loved it. Thank you.

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

      Thanks man.

    • @isagive
      @isagive Месяц назад

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

    • @wajeehsaleh6121
      @wajeehsaleh6121 17 дней назад

      Thanks, man!

  • @truepakistani9604
    @truepakistani9604 2 года назад +7

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

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

      you're most welcome

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

    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

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

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

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

      Glad it was helpful!

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

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

    straight to the point, thanks

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

      you're welcome Hekar

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

    Wonderful explanation

    • @jgoebel
      @jgoebel  Месяц назад

      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.

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

    Very good!

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

    Nicely Explained >>

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

      Glad it was helpful!

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

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

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

    The best as always

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

      thx Ahmed 👍

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

    great explanation, many thanks!

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

      Glad you enjoyed it!

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

    Very nice video!!!

  • @superdop1976
    @superdop1976 10 месяцев назад

    Thank you for the great explanation.

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

      You are welcome!

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

    very nicely explained. thanks. i liked it.

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

      Thanks for liking

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

    Great explanation!

  • @israelkayaba6002
    @israelkayaba6002 Месяц назад

    Thanks bro !

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

    Handy overview, now to building a CSP 😳

  • @user-yi8ej9qj2p
    @user-yi8ej9qj2p Год назад

    Thank you for such great video!

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

    Nice explanation!
    tks for sharing

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

      Glad you liked it!

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

    thank you for the video! super clear!

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

    Very well explained.... thanks

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

      thx Sanket 👍

  • @FlanzetaGaming
    @FlanzetaGaming 22 дня назад

    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

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

    thank you buddy ! :)

    • @jgoebel
      @jgoebel  Месяц назад

      You're most welcome!

  • @codemadesimple1043
    @codemadesimple1043 10 месяцев назад

    Well explained 🎉 Are you from Denmark?

    • @jgoebel
      @jgoebel  10 месяцев назад +1

      no, I'm from Germany

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

    thanks 4 the clear explanation

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

      Glad it was helpful!

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

    Thank you for the video!!

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

      My pleasure!

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

    Great video

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

      Glad you enjoyed it

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

    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.

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

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

  • @IHHI22
    @IHHI22 Месяц назад

    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

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

    Thanks man !!

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

      you're welcome

  • @markomilardic
    @markomilardic 10 месяцев назад

    Great :)

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

      Thanks!

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

    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 21 час назад

      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.

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

    alert("Thank you, very clear explanation")

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

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

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

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

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

      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

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

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

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

    • @jgoebel
      @jgoebel  2 года назад +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?

  • @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  11 месяцев назад

      CSP is independent of any cloud service

  • @KareenKreis-q9c
    @KareenKreis-q9c 10 дней назад

    Rebekah Prairie

  • @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, RUclips will delete it!

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

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

  • @nithiyashrees3456
    @nithiyashrees3456 10 дней назад

  • @chloesawallace6247
    @chloesawallace6247 День назад

    Hall Anthony Brown Ruth Miller Frank

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

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

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

    Is it Elon Mask?

  • @nithiyashrees3456
    @nithiyashrees3456 10 дней назад

    dd

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

    alert(document.cookie)