Cómo asegurar una cookie de autenticación sin SSL

Estoy en el proceso de crear un sistema de inicio de sesión que utiliza ambas sesiones (para aquellos que no permiten el uso de cookies (de acuerdo con elley de cookies.. estoy usando el sitiohttp://www.cookielaw.org/the-cookie-law.aspx como una referencia)

Ahora, tengo este sistema para mi autenticación de cookies

function GenerateString(){
        $length = mt_rand(0,25);
        $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
        $string = '';

        for ($p = 0; $p < $length; $p++) {
            $string .= $characters[mt_rand(5, strlen($characters) -1)];
        }
        return $string;
}
$RandomString = GenerateString();

$CookieAuth = $DB->prepare("INSERT INTO cookieauth (Username,RandomString) VALUES (?,?)");
$CookieAuth->bind_param('ss',$_POST['Username'],$RandomString); 
$CookieAuth->execute(); // Insert the Authentication Methods into the database 
$CookieAuth->close(); // Allow another query/statement

$GetInsertID = $DB->prepare("SELECT ID FROM CookieAuth WHERE RandomString=?");
$GetInsertID->bind_param('s',$Randomstring);
$GetInsertID->execute();
$GetInsertID->bind_result($RowID);
$GetInsertID->fetch();
$GetInsertID->close(); 

setcookie("Auth[ID]",$RowID);
setcookie("Auth[UName],$_POST['Username']);
setcookie("Auth[RandomString]",$RandomString);

Luego para procesar la cookie:

if(isset($_COOKIE['Auth'])){
   $Authenticate = $DB->prepare("SELECT Username,RandomString FROM cookieauth WHERE ID=?");
   $Authenticate->bind_param('i',$_COOKIE['Auth']['ID']);
   $Authenticate->execute();
   $Authenticate->bind_result($RowUsername,$RowString);
   $Authenticate->fetch();
   $Authenticate->close();

if ($_Cookie['Auth']['UName'] == $RowUsername){
    if ($_COOKIE['Auth']['RandomString'] == $RowString){
        header("Location: LoggedIn.php");
    }else{
        die("Possible Cookie Manipulation, Autologin Cannot Continue");
    }
}else{
    die("Possible Cookie Manupulation, Autologin Cannot Continue!");
}

Mi objetivo general es proporcionar una función de inicio de sesión automático mediante el uso de cookies. Como la gente debería saber, se almacenan esencialmente en el disco duro como texto simple. Entonces, si incluyo una cadena generada al azar que se cambiará en el procesamiento posterior cada vez (y luego actualizar la cookie para que coincida con la base de datos), esta es una forma razonablemente segura para lograr la tarea? Quiero decir, entiendo que esto no es 100% seguro debido a que algunos usuarios podrían intentar manipular la cadena aleatoria, por lo que podría recurrir a una sal, clave aleatoria y luego usarhash_hmac a sha512 la tecla salt + y guárdela como la cookie ...

Mi pregunta general es si los fragmentos que proporcioné son un método semiseguro para procesar los inicios de sesión automáticos a través de cookies y puedo minimizar la posibilidad de que algunos tipos malos manipulen las claves para obtener los datos necesarios.

Respuestas a la pregunta(1)

Su respuesta a la pregunta