Aktywne Wpisy

jmuhha +143
Ktoś mi powie jak Polacy w mieszkaniu 45 m2 mają mieć dziecko albo wziąć na starość rodzica i się nim opiekowac?
#nieruchomosci
#nieruchomosci
źródło: 1000017781
Pobierz
daretti877 +113
źródło: 1000005057
Pobierz




picklena danych od użytkownika ponieważ podczas ich deserializacji może dojść do atakuobject injectioni wykonania złośliwego kodu.Ale co z innymi formatami? Czy również są niebezpieczne?
W kolejny odcinku #od0dopentestera o plikach
yaml.import yamlwith open("test.yaml", "r") as s:
y = yaml.load(s)
print y['imie']
Format
yamlnie jest tak prosty jak mogło by się wydawać.W standardowym użyciu sam rozpoznaje on typ danych który jest do niego przekazywany.
Czasami jednak chcielibyśmy mieć kontrolę nad typem przechowywanym w konfiguracji.
Stąd też tagi - czyli polecenia rozpoczynające się od wykrzyknika, dzięki którym możemy wybrać typ samodzielnie.
Tak jak tutaj - gdzie
0.7będzie traktowana jako string a nie jako float.moj_string: !!str 0.7Niektóre parsery implementują specyficzne dla danego języka tagi - i tak w przypadku pythona możemy zdefiniować tuple:
moja_tupla: !!python/tuple [1, 2]Gdzie zatem znajduje się dzisiejszy błąd?
W parserze używanym w pythonie możemy również skorzystać z tagu
apply, który pozwala na wywołanie dowolnej funkcji z dowolnego modułu.Jest to więc równoznaczne z możliwością wykonania dowolnego kodu na atakowanym serwerze.
W naszym przypadku użyjemy funkcji
systemdo wyświetlenia zawartości bieżącego katalogu:imie: !!python/object/apply:os.system ["dir"]Jak się ochronić przed tym błędem?
Zamienić funkcję
loadnasafe_load.#naukaprogramowania #programowanie #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu