Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana]$this->input->post usuwa tagi <title>
Forum PHP.pl > Forum > PHP > Frameworki
Spawnm
Witam,
mam dość dziwny problem z odbieraniem danych z formularza,
odbieram je przez $this->input->post('body');
w danych jest kod html oraz jakaś treść.
Niestety $this->input->post wycina mi z całości tagi <title>,
Co zrobić aby tak się nie działo?
Dodam że nie jest to wina serwera gdyż w osobnym pliku sprawdzałem odbieranie danych przez zwykły $_POST
i nic nie było wycinane...
k_@_m_i_l
Dość głupie, ale sprawdź w config.php czy masz ustawione :
  1. $config['global_xss_filtering'] = TRUE;

na TRUE, jeśli tak, to spróbuj zmienić na FALSE i zobacz czy to coś da winksmiley.jpg
wookieb
Błagam... tylko nie moderator sad.gif
Cytat
usuwa

k_@_m_i_l
W sumie jak tak teraz myślę, to w configu lepiej tą wartość pozostawić ustawioną na TRUE, a w kodzie gdzie pobierasz tą wartość z POST-a, to daj sobie tak :
  1. $this->input->post('body',null,false);

Gdzie trzeci parametr odpowiada za filtrowanie przed atakami XSS. A ustawienie go na false, powoduje, że pobierana wartość nie jest pod tym kątem sprawdzana.
Spawnm
No niestety , jak ustawiam w configu na true to 3 parametr jest omijany i zawsze mi filtruje , ale jak dam w configu false to już uwzględnia 3 parametr .



Już widzę czemu tak się dzieje...
Gdy jest odpalany input który pobiera $_POST
najpierw w __construct jest
  1. //czy w configu jest tru
  2. $this->use_xss_clean = (bool) Kohana::config('core.global_xss_filtering');
  3. //jakieś inne działania
  4. //...
  5. if (is_array($_POST))
  6. {
  7. foreach ($_POST as $key => $val)
  8. {
  9. // Sanitize $_POST
  10. $_POST[$this->clean_input_keys($key)] = $this->clean_input_data($val);
  11. }
  12. }

a w clean_input_data() mamy
  1. if ($this->use_xss_clean === TRUE)
  2. {
  3. $str = $this->xss_clean($str);
  4. }

A nasz 3 parametr jest sprawdzany dopiero po przepuszczeniu danych przez clean_input_data ...
czyli jak można zobaczyć w kodzie:
  1. protected function search_array($array, $key, $default = NULL, $xss_clean = FALSE)
  2. {
  3. //jakieś inne działania
  4. //...
  5. if ($this->use_xss_clean === FALSE AND $xss_clean === TRUE)
  6. {
  7. // XSS clean the value
  8. $value = $this->xss_clean($value);
  9. }

jest on uwzględniany tylko gdy mamy config na false smile.gif
shreeve
Wiem, że temat trochę już się postarzał, ale czy udało się komuś znaleźć na ten problem jakiegoś prostego fixa czy jednak trzeba będzie zabawić się w przerabianie biblioteki Input?
Spawnm
Ale na jaki problem ?
Przeczytaj posty.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.