Sé que se han hecho preguntas similares, pero estoy luchando para averiguar cómo hacerlo. Estoy construyendo un CMS, bastante primitivo en este momento, pero es como un ejercicio de aprendizaje; en un sitio de producción, yo ...

0
Jack27696 14 mar. 2021 a las 18:12

1 respuesta

La mejor respuesta

Una forma buena y barata de evitar el scripting entre sitios es hacer que su programa php autorice todo lo que ingresen sus usuarios antes de almacenarlo en la base de datos. Es decir, desea tomar esta entrada de un usuario

Hi there sucker! I just hacked your site.
<script>alert('You have been pwned!')</script>

Y conviértalo a esto antes de ponerlo en su base de datos.

Hi there sucker! I just hacked your site.
&lt;script&gt;alert('You have been pwned!')&lt;/script&gt;

Cuando pasa &lt; a un navegador, lo muestra como <, pero no hace nada más con él.

La función htmlentities () puede hacer esto por usted. Y, htmlspecialchars_decode () de php puede revertirlo si lo necesita a. Pero no debe revertir la operación a menos que sea absolutamente necesario, por ejemplo, para cargar el documento en un editor incrustado para cambios.

También puede optar por autorizar el texto proporcionado por el usuario después de recuperarlo de su base de datos y antes de mostrarlo. Si llega al punto en el que varias personas trabajan en su código, es posible que desee hacer ambas cosas por seguridad.

También puede representar la entrada proporcionada por el usuario dentro de las etiquetas <pre>content</pre>, lo que le dice al navegador que simplemente muestre el texto y no haga nada más con él.

(Haga clic con el botón derecho en Inspeccionar en esta misma página para ver cómo Stack Overflow maneja mi ejemplo malicioso).

1
O. Jones 14 mar. 2021 a las 17:31