» »

Content-Security-Policy problem

Content-Security-Policy problem

poweroff ::

Na spletišču, ki ga poganja Nginx imam nastavljeno serviranje naslednjih security headerjev:

add_header Content-Security-Policy "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src https://infosec-seminar.si/; img-src 'self'; connect-src 'self'; font-src 'self' data:; frame-src 'self'; manifest-src 'self'; object-src 'self'; worker-src 'self'; media-src 'self'" always;


Vsaj JavaScript koda, fonti, CSS-ji, skratka VSE se nahaja izključno na tem spletišču in nič se ne kliče od zunaj.

Ko zadevo prikažem v Firefoxu pa mi v konzoli javi:

Content Security Policy: Nastavitve strani ne dovolijo nalaganja vira na self ("script-src https://infosec-seminar.si/"). Source: (function (ERROR) { const V8_STACK_....

Content Security Policy: Nastavitve strani ne dovolijo nalaganja vira na self ("script-src https://infosec-seminar.si/"). Source: onfocusin attribute on DIV element.


Kritična (zame) sta style-src in script-src.

Če prav razumem zadeve, bi script-src 'self' moralo zadostovati. Ampak če dam ali 'self' ali https://infosec-seminar.si/, mi v obeh primerih konzila javi isto.

Druga stvar je pa da bi se rad znebil tudi 'unsafe-inline' pri style-src...

Kakšna ideja kako to rešit?
sudo poweroff

HotBurek ::

FF ESR 52
Prvi error: Content Security Policy: Directive 'frame-src' has been deprecated. Please use directive 'child-src' instead.
Drugi error: Content Security Policy: Couldn't process unknown directive 'worker-src'

Za JS error pa je bila solucija tole: 'unsafe-inline'

Do errorja pride naprimer zaradi onclick (stestirano):
<button onclick="check();">Check</button>


Tuto kompleto da ni errorjev:
style-src 'self' 'unsafe-inline';
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

poweroff ::

Hmm, kako pa se znebim tega, da bi moral uporabiti 'unsafe-inline'?

Mislim, načeloma znotraj templatov povsod uporabljam
<script src="/skripta.js"></script>


Če prav razumem, 'unsafe-inline' pomeni, da se nekje kliče JS koda direktno in ne preko script-src?

No, zdaj sem nastavil takole:
style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline';


...in errorjev ni več, razen enega, in sicer:

Nalaganje za <script> z virom "https://infosec-seminar.si/assets/jquery.min.js" ni uspelo.


Kaj to pomeni?

Ta skripta se mi pojavi v templatu samo dvakrat:
grep -r 'jquery.min.js' *
_layouts/default.html:	<script src="/assets/jquery.min.js"></script>
_site/index.html:	<script src="/assets/jquery.min.js"></script>
sudo poweroff

HotBurek ::

Ugibam, da se problema z unsafe-inline rešiš tako, da v JS ob "load done" dodaš event listenerje, v HTML elementih pa vse odstraniš.

document.addEventListener('DOMContentLoaded', function() {
// https://www.w3schools.com/jsref/met_element_addeventlistener.asp
});



Sam je čudno, ker nikjer na strani ne najdem onclick (ali kaj temu podobnega) za kak HTML element...

Glede ostalih napak. Tole mi pokaže v FF (samo CSS errorje):

Error in parsing value for 'perspective'. Declaration dropped. ;
Unknown property '-moz-osx-font-smoothing'. Declaration dropped. style.css:325:26
Expected 'none', URL, or filter function but found 'progid'. Error in parsing value for 'filter'. Declaration dropped. style.css:342:453
Expected 'none', URL, or filter function but found 'progid'. Error in parsing value for 'filter'. Declaration dropped. style.css:343:24
Expected 'none', URL, or filter function but found 'progid'. Error in parsing value for 'filter'. Declaration dropped. style.css:344:24
Expected 'none', URL, or filter function but found 'progid'. Error in parsing value for 'filter'. Declaration dropped. style.css:345:29
Expected 'none', URL, or filter function but found 'progid'. Error in parsing value for 'filter'. Declaration dropped. style.css:346:27

Za source kodo (HTML) pa za tag {/p} na koncu 92 vrstice javlja No "p" element in scope but a "p" end tag seen.

Tistih errorjev od prej pa ni več.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

HotBurek ::

A input filtriraš? :)

https:// infosec-seminar.si /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--++++!!!---@@@~~~###$$$%%%***

Tole vrne normalno http 200 nazaj.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()

poweroff ::

Static HTML je. Jekyll ga generira lokalno potem ga rsyncnem gor. Ni nobenega PHPja ali česarkoli drugega gor...
sudo poweroff


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Javascript DOM based XSS vulnerability

Oddelek: Programiranje
152811 (2233) MrStein
»

Inline JS v HTML; varnost, XSS, ...

Oddelek: Programiranje
211766 (1374) MrStein
»

jquery in div-i (strani: 1 2 )

Oddelek: Izdelava spletišč
8711213 (9951) lisjak
»

css menu v IE

Oddelek: Izdelava spletišč
171212 (990) pitagora
»

Java ne dela

Oddelek: Pomoč in nasveti
51468 (1322) farko

Več podobnih tem