PHP ha incorporado una administración de sesión que puede utilizar, por ejemplo.
session_start();
<?php
$_SESSION[] = something;
session_destroy(); <- when you want to end that current session
?>
Para su acción de formulario: <?php echo($_SERVER[PHP_SELF]);>
para mitigar xss
si utiliza este método, cada sesión asignará una clave de usuario en la máquina de los usuarios y cuando se abra una sesión en otro lugar, buscará esa clave. Si coincide, accede a esa sesión. Si no es así, comienza una nueva. sesión.
Puedes usar session_destroy()
para eliminar todos los datos de sesión de ese usuario o session_unset();
para destruir una sesión en particular.
Si está utilizando una base de datos SQL, debe asegurarse de que se está realizando la validación; de lo contrario, dejará su aplicación web abierta a varios ataques, es decir. XSS, SQLi, etc., que pueden filtrar los datos de sus usuarios, para una aplicación / sitio web de medios sociales que es muy malo por razones obvias. Por ejemplo, para un campo de inicio de sesión, algo como esto sería seguro:
<?php
function clean($string) //custom cleaning with regex
{
$string = str_replace(' ', '-' $string);
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string);
return preg_replace('/-+/', '-', $string);
}
if(isset($_POST('submit'))) // built in sanitising
{
$sanitised_name = filter_input(INPUT_POST, 'username', FILTER_SANITISED_ENCODED, FILTER_FLAG_STRIP_HIGH);
}
echo $sanitised_name; // print out the sanitised name
echo .clean($_POST['username']).; // print out using the custom function
?>
Lo anterior muestra dos formas diferentes de lograr resultados muy similares con las funciones integradas. el primer bloque usa expresiones regulares que podría restringir a cualquier conjunto de caracteres que quisiera que los usuarios usaran, mientras que el segundo bloque usa las funciones integradas que tiene PHP: el final solo tiene eco para que pueda ver la diferencia para cualquier entrada que use.
EDITAR: Cuando almacene los nombres de usuario y las contraseñas de sus usuarios, debe guardar el nombre de texto sin formato en su base de datos, pero las contraseñas deben incluirse con sal y hash, así que en lugar de verificar si un nombre de usuario y una contraseña coinciden, verifique si un hash de nombre de usuario y contraseña coinciden. tiene en su base de datos, pero asegúrese de configurar una conexión segura antes de que el usuario envíe algo; de lo contrario, está enviando información a su sitio de forma poco segura, es bastante fácil para alguien que realice MITM y robe credenciales.
En realidad escribí un artículo que trata específicamente sobre la protección de PHP, SQL, cookies y sesiones de ataques como XSS, SQLi, secuestro de sesiones, etc. Si es de alguna utilidad, le dejo un enlace a continuación, ya que se incluye en más detalles: enlace Sólo como un descargo de responsabilidad no trabajo en seguridad - Soy un estudiante que estudia compSec, pero espero trabajar en la industria en los próximos dos años. Si falta algo o es mejor que mi respuesta, edítalo para mejorarlo, ¡ya que algunas personas aquí son muy conocedoras!
Buena suerte con la aplicación de redes sociales y el sitio web. ¡Es bueno ver que está deseando que esté seguro desde el principio!