do mojej wiedzy po skażeniu zmiennej, Perl nie pozwoli jej używać w systemie(), exec(), otwartych potokach, eval(), komendach backtick lub jakiejkolwiek funkcji, która wpływa na coś poza programem (np. jako odłączenie). Więc jaki jest proces, aby go nie rozplątać?Jak "odświeżyć" zmienną?
Odpowiedz
użyć wyrażenia regularnego na zmienną skażonej wyciągnąć „bezpiecznej” wartości:
Czasem trzeba po prostu usunąć taintedness zapisywanych danych. Wartości mogą być nieskażone, używając ich jako kluczy w haszyszu; w przeciwnym razie jedynym sposobem na ominięcie mechanizmu skażenia jest odniesienie podtypów z dopasowywania wyrażenia regularnego. Perl zakłada, że jeśli odwołasz się do podłańcucha za pomocą $ 1, $ 2 itd., Wiedziałeś, co robiłeś, gdy pisałeś wzorzec.
Nie ignoruj tego ostrzeżenia jednak:
Oznacza to, że przy użyciu odrobiny myślenia - Do not ślepo untaint niczego, albo pokonać cały mechanizm. Lepiej sprawdzić, czy zmienna zawiera tylko dobre znaki (dla pewnych wartości "dobrych"), a nie sprawdzać, czy ma złe znaki. To dlatego, że zbyt łatwo jest przeoczyć złe postacie, o których nigdy nie myślałeś.
+1 za odpowiednią standardową dokumentację. Chcę dodać, że użycie '$ 1' i przyjaciół nie jest obowiązkowe, wyrażenie match z captures zwraca listę skalarów, które są nieskażone. Przykład: 'perl -T -MDevel :: Peek -e'Dump [$ ARGV [0] = ~/(\ d +)/g] '' Fiorina" Fury "161 Class C Work Correctional Unit (nr rej. 12037154) w jeden punkt utrzymywał tysiące więźniów o maksymalnym ryzyku chromosomu podwójnego Y, ale w 2179 poparł dwudziestu dwóch więźniów i trzech kuratorów. " – daxim
OPIS
Moduł ten jest używany do prania danych, które zostały skażone stosując przełącznik
-T
być w trybie zabarwienie. Można go używać do skryptów CGI , a także skryptów wiersza poleceń. Moduł rozwiąże skalary, tablice i skróty. Podczas prania matrycy prane są tylko uszkodzone elementy tablicy .SYNOPTYKA
use Untaint; my $pattern = qr(^k\w+); my $foo = $ARGV[0]; # Untaint a scalar if (is_tainted($foo)) { print "\$foo is tainted. Attempting to launder\n"; $foo = untaint($pattern, $foo); }else{ print "\$foo is not tainted!!\n"; }
- 1. Jak mogę odświeżyć przechowywaną i snapshotowaną zmienną selektora jquery
- 2. Autouzupełnianie jQuery: jak odświeżyć listę?
- 3. Jak odświeżyć płótno
- 4. Jak programowo odświeżyć przeglądarkę?
- 5. Jak odświeżyć PictureBox
- 6. Jak odświeżyć DbContext
- 7. Jak odświeżyć dokument Bokeh
- 8. Jak odświeżyć mapę Google.
- 9. Jak odświeżyć taglistę w vimie?
- 10. Jak odświeżyć datagrid w WPF
- 11. Jak odświeżyć obserwowalne w RxJava?
- 12. Jak odświeżyć ramkę danych WPF?
- 13. Jak odświeżyć siatkę Kendo UI
- 14. Jak wykrywać Pull, aby odświeżyć
- 15. Jak odświeżyć singleton w C#
- 16. Android: ListFragment: Jak odświeżyć listę
- 17. Jak odświeżyć kursor z CursorLoader?
- 18. Jak odświeżyć GridView w ExtJ?
- 19. Jak mogę odświeżyć zawartość jsTree?
- 20. Jak odświeżyć piechart w C#
- 21. Publiczny filtr strumienia Tweepy przez zmienną zmienną
- 22. Kendo ui datasource odświeżyć?
- 23. Jak dekompilować zmienną zmienną w Javie?
- 24. JQuery odświeżyć wybierz pole
- 25. Programowo odświeżyć GWT CellTree
- 26. NSFetchedResultsController odświeżyć pobieranie?
- 27. Ocenianie się „zmienną zmienną”
- 28. Pociągnij, aby odświeżyć JavaScript
- 29. iOS Jak odświeżyć ScrollView po zmianie modelu?
- 30. Pull odświeżyć jak gmail nowej (4.5) aplikacji
Większość rozdziale Bezpieczeństwa Mastering Perl przechodzi przez to, i to nie tylko co jest w perlsec. :) –