Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CodeIgniter]CKEditor i Codeigniter
webmaniak
post
Post #1





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


Witam,
mam kolejny problem z codeigniterem, tym razem wiąże się to z ckeditorem. Mianowicie ckeditor usuwa mi style, czyli jak wspiszę: <div style="font-size: 14px"> - to po zapisaniu mam sam div. "Wyguglowałem" że rozwiązaniem jest:

  1. $config['global_xss_filtering'] = FALSE;


Jednak jest to zabezpieczenie przed XSS, tu więc moje pytanie, jak bardzo moja (kiedyś) aplikacja straci na bezpieczeństwie, gdy to wyłączę?
Druga sprawa, znalazłem również kod żeby obejść grzebanie w configu:

  1. protected function _remove_evil_attributes($str, $is_image){
  2. // All javascript event handlers (e.g. onload, onclick, onmouseover), style, and xmlns
  3. $allowed = array("adresy dla których style ma nie być usuwany bez domeny na przykład '/admin/edittext/'");
  4. if(in_array($_SERVER['REQUEST_URI'],$allowed)){
  5. $evil_attributes = array('on\w*', 'xmlns');
  6. }else{
  7. $evil_attributes = array('on\w*', 'style', 'xmlns');
  8. }
  9.  
  10. if ($is_image === TRUE){
  11. /*
  12.   * Adobe Photoshop puts XML metadata into JFIF images,
  13.   * including namespacing, so we have to allow this for images.
  14.   */
  15. unset($evil_attributes[array_search('xmlns', $evil_attributes)]);
  16. }
  17.  
  18. do {
  19. $str = preg_replace(
  20. "#<(/?[^><]+?)([^A-Za-z\-])(".implode('|', $evil_attributes).")(\s*=\s*)([\"][^>]*?[\"]|[\'][^>]*?[\']|[^>]*?)([\s><])([><]*)#i",
  21. "<$1$6",
  22. $str, -1, $count
  23. );
  24. } while ($count);
  25. return $str;
  26. }


Niestety, w miejscu w którym znalazłem kod nie ma opisanego sposobu- przykładu jego wykorzystania, a próba kontaktu z autorem niestety się nie powiodła. Plik umieściłem w katalogu core w pliku MY_Security.php.
Nie ma tam przykładu użycia, a za bardzo nie wiem co wpisać jako $str i $is_image żeby to działało. Jako $str mam wpisać elementy jak np. div, span? a jako drugi parametr? Proszę o napisanie przykładu wykorzystania tego kodu osoby lepiej rozumiejące go.

Ten post edytował webmaniak 27.12.2012, 09:28:27
Go to the top of the page
+Quote Post
szok
post
Post #2





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

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


Nie straci na bezpieczeństwie jeśli dane z post będziesz pobierał tak:
$this->input->post('pole', TRUE);

Go to the top of the page
+Quote Post
webmaniak
post
Post #3





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


No dobrze, a jakbym jednak nie chciał grzebać w configu i zostawić to xss na true, możesz napisać przykład wykorzystania tej metody? Jak i gdzie ją wczytać?
Go to the top of the page
+Quote Post
szok
post
Post #4





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

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


Nie da się, jak masz ustawione na true, to CI zawsze będzie filtrował dane jakie przychodzą i bedzie ci cyrki w ckeditor.

Dobrą opcja jest napisać własną klasę input. Lub przekazywać dane czystym $_POST'em choć tu nie jestem pewien czy CI nie zamienia tej tablicy.
Go to the top of the page
+Quote Post
mieszkos
post
Post #5





Grupa: Zarejestrowani
Postów: 78
Pomógł: 11
Dołączył: 1.04.2009

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


Dziwne macie rozwiązania, form_validation i po prostu nie robić xss_clean dla tego pola. chcesz to napisz to ci podpowiem 35138255
Go to the top of the page
+Quote Post
webmaniak
post
Post #6





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


Problem rozwiązany. Zastosowałem metodę z pierwszego postu, tyle że w moim przypadku ckeditor jest ustawiony do edycji wpisów, a więc wpisywałem zły adres. Ostatecznie problem rozwiązałem usuwając id z $_SERVER['REQUEST_URI'], w innych przypadkach metoda będzie usuwać style, a więc będzie wygodnie i bezpiecznie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 07:38