seguridad disable csrftoken anti codeigniter xss

disable - seguridad codeigniter 3



Codeigniter-Deshabilita el filtrado XSS en una publicaciĆ³n (7)

En mi caso, la solución de Treeface no funciona, pero encontré otra forma. Hice MY_Input con _sanitize_globals () y agregué si la construcción en su lugar está desinfectando los datos de la publicación.

// Clean $_POST Data if (is_array($_POST) AND count($_POST) > 0) { foreach ($_POST as $key => $val) { if($this->_clean_input_keys($key) != ''my_none_sanitize_field'') $_POST[$this->_clean_input_keys($key)] = $this->_clean_input_data($val); } }

Estoy intentando configurar un CMS en la parte posterior de un sitio, pero cada vez que los datos de la publicación tienen una <a href=... en ella, los datos de la publicación se eliminan.

Tengo $config[''global_xss_filtering''] = TRUE; en config

Mi pregunta es ¿hay alguna manera de deshabilitar el filtrado xss para un elemento?

p.ej

$this->input->post(''content'', true); - lo enciende, pero ¿cómo apagarlo?

Gracias a todos.

PVS


Sí, la extensión de Entrada con el reemplazo del método de publicación fue muy útil, al igual que el lector astuto que advirtió que debería ser return parent :: post ($ index, $ xss_clean). Estaba recibiendo errores y no pensé en ese error obvio. Lo solucioné y estoy fuera de funcionamiento.

Lo estamos usando para escapar de los datos de publicación para su uso en sentencias sql. Aunque los métodos db de CI son agradables, tenemos algunas sentencias sql grandes que son más fáciles de codificar a mano.


Si desea cambiar el comportamiento predeterminado del método post() , puede ampliar la biblioteca de entrada central o, si es flojo, puede cambiar la línea 278 (más o menos) de la biblioteca de entrada para leer:

/** * Fetch an item from the POST array * * @access public * @param string * @param bool * @return string */ function post($index = '''', $xss_clean = TRUE) { return $this->_fetch_from_array($_POST, $index, $xss_clean); }

La única diferencia aquí es que he cambiado la variable $ xss_clean a TRUE lugar de FALSE . Ahora puede desactivar el filtrado XSS global y filtrará las entradas automáticamente a menos que especifique falso como el segundo parámetro en su llamada al método post() la biblioteca de post() . Solo un método más abajo es el método get() , y puede cambiar eso de la misma manera.

Sin embargo, si yo fuera tú, extendería la biblioteca nativa, porque hay una gran probabilidad de que te hayas olvidado de esto cuando actualices CodeIgniter, y entonces de repente te preguntarás por qué te están atacando XSS. . Eso se vería así:

class MY_Input extends CI_Input { function My_Input() { parent::CI_Input(); } function post($index = '''', $xss_clean = TRUE) { return parent::post($index, $xss_clean); } }

Puede obtener más información sobre la extensión de bibliotecas aquí:

http://codeigniter.com/user_guide/general/creating_libraries.html


Si desea mantener global xss_clean habilitado y anular solo ciertos casos, puede extender la biblioteca de entrada para mantener un clon de $_POST para proporcionar datos brutos cuando se le pregunte:

<?php if (!defined(''BASEPATH'')) exit(''No direct access allowed.''); class MY_Input extends CI_Input { public function __construct() { $this->_POST_RAW = $_POST; //clone raw post data parent::__construct(); } public function post($index = null, $xss_clean = TRUE) { if(!$xss_clean){ //if asked for raw post data -eg. post(''key'', false)-, return raw data. Use with caution. return $this->_POST_RAW[$index]; } return parent::post($index, $xss_clean); } } ?>

De esta forma, puede usar $this->input->post(''mydata'', FALSE) para recuperar datos de publicación sin xss_clean incluso si xss_clean está habilitado globalmente.


puedes apagarlo temporalmente

$ this-> config-> set_item (''global_xss_filtering'', falso);

$ c = $ this-> input-> post (''contenido''); luego, vuelva a encenderlo ..

$ this-> config-> set_item (''global_xss_filtering'', true);


trabajando con CI 2.2 Creo que la solución de treeface dejará que input-> get (), input-> cookie () etc. no sean xss_cleaned. (usamos get in oauth requests, etc.) El cambio de configuración global hace que el constructor no los escape y la clase principal todavía tiene xss_clean por defecto en FALSE en estos métodos ...

Básicamente, he implementado la misma solución en más métodos.

class MY_Input extends CI_Input { /* fixes to allow xss_clean to be disabled on a per field basis * [ e.g. tinymce html content with style / class / event attributes ] * initial ref : http://.com/questions/3788476/codeigniter-disable-xss-filtering-on-a-post-basis * this is based on CI 2.2 * the above () solution only updates the post method - which means all the rest ( get, get_post, cookie, server, request_headers, get_request_header) * NB : we need GET to allow oauth type activities ! * * 1 - change the global config to xss_clean = false [ otherwise the constructor will ''xss_clean'' everything before we have a chance to say no ! ] * 2 - make all of methods that take the xss_clean parameter use TRUE as default value * 3 - we can now pass the second parameter in as FALSE if we do not want to xss_clean */ function get($index = '''', $xss_clean = TRUE) { return parent::get($index, $xss_clean); } function post($index = '''', $xss_clean = TRUE) { return parent::post($index, $xss_clean); } function get_post($index = '''', $xss_clean = TRUE) { return parent::get($index, $xss_clean); } function cookie($index = '''', $xss_clean = TRUE) { return parent::cookie($index, $xss_clean); } function server($index = '''', $xss_clean = TRUE) { return parent::server($index, $xss_clean); } function request_headers($xss_clean = TRUE) { return parent::request_headers($xss_clean); } function get_request_header($index, $xss_clean = TRUE) { return parent::get_request_header($index, $xss_clean); } }

Espero que esto sea de alguna ayuda para alguien


yo definí

global $mypost; $mypost=$_POST;

en index.php de mi cms raíz

entonces en cualquier lugar puedo la variable global como

global $mypost; $var=isset($mypost["field"])? $mypost["field"]:"";

cada vez que necesito publicar sin filtro.

trabajado para mí espero que ayude.