Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Bład przy wysyłce $_POST w Kohanie ?, Disallowed key characters in global data. ??
haryb
post
Post #1





Grupa: Zarejestrowani
Postów: 137
Pomógł: 0
Dołączył: 9.11.2004
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Napotkałem taki problem.
W kohanie mam wrzucony CKeditor i poprzez ajaxa zapisuje dane z ckeditora.
W ajaxie mam zdefiniowane wysyłanie POST i wszystko chodzi ok jak wpisuje z palca kilkadziesiąt linijek.
Ale jak np juz zrobię kopy - wklej jakiś blok nawet nie duży z np. strony internetowej to po wrzuceniu do ckeditora - i kliknięciu zapisz - dostaje zwrotkę z błędem:


"Disallowed key characters in global data"

Nie wiem za bardzo gdzie tego błedu szukać i jak go obejść. Czy on jest związany bezpośrednio z KOHANA czy samym php?
A może js który wysyła mi ajaxowo coś knoci?


Przed chwilą znalazłem w samej kohanie w helperze jednym taki kod:
  1. /**
  2. * This is a helper method. It enforces W3C specifications for allowed
  3. * key name strings, to prevent malicious exploitation.
  4. *
  5. * @param string string to clean
  6. * @return string
  7. */
  8. public function clean_input_keys($str)
  9. {
  10. $chars = PCRE_UNICODE_PROPERTIES ? '\pL' : 'a-zA-Z';
  11.  
  12. if ( ! preg_match('#^['.$chars.'0-9:_.-]++$#uD', $str))
  13. {
  14. exit('Disallowed key characters in global data.');
  15. }
  16.  
  17. return $str;
  18. }

Wrzuciłem zeby wyświetlał mi razem z komunikatem zmienna $str i np wyszło takie coś:
"Disallowed key characters in global data.oacute;wi_Ryszard_Bugaj,_były_społeczny_doradca_prezydenta_Lecha_Kaczyńskie
go_</b></p>
<span_id"

Czy to chodzi o jakieś specjalne znaki - niedozwolone czy cos w tym stylu? czy można to w ogóle jakoś wyłaczyć by tego nie sprawdzał? Czy raczej nie?



Za wszelką pomoc będę wdzięczny.

Ten post edytował haryb 21.04.2010, 00:56:44
Go to the top of the page
+Quote Post
ziqzaq
post
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


Rozszerz sobie klasę Input i przeładuj tą metodę. Kohana poprosu filtruje wszystkie klucze tablicy.
Go to the top of the page
+Quote Post
haryb
post
Post #3





Grupa: Zarejestrowani
Postów: 137
Pomógł: 0
Dołączył: 9.11.2004
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Stworzyłem klase w libraries :
MY_Input.php

  1. <?php defined('SYSPATH') or die('No direct script access.');
  2.  
  3. class Input extends Input_Core {
  4.  
  5. public function __construct()
  6. {
  7. parent::__construct();
  8. }
  9.  
  10. public function clean_input_keys($str){
  11. }
  12. }
  13. ?>


Tylko nie wiem co mam dokładnie zdefiniowac w tej metodzie - jak ja pusta zostawiłem tak jak teraz to nic sie nie zmieniło.
To znaczy wrzuciłem jakis tam kopiowany tekst z strony (np. jakis artykul na wp.pl) i to nawet nie super długi i ok - błedem już tym nie rzuca ale i tak ucina tekst na jakims znaku i zapisze jedna linijke lub dwie.
Może tutaj by trzeba bylo jakos kodowac ta wartosc z ckeditora co idzie postem? zeby jakies specjalne znaki, encje itd przesłał poprawnie?

Pozdro
Hary

Go to the top of the page
+Quote Post
ziqzaq
post
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


Ogólnie to dziwne, że to działa bo twoja metoda nie zwraca żadnego ciągu znaków.
  1. public function clean_input_keys($str){
  2. return $str; // <===
  3. }

Jeśli to problem z danymi z $_POST to może wyświetl sobie tą tablice przed uruchomieniem frameworka (w bootstrapie) i zobacz co ona zawiera.
Ewentualnie może ustaw $config['global_xss_filtering'] na FALSE?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:24