Como proteger um cookie de autenticação sem SSL

Estou no processo de criar um sistema de login que usa ambas as sessões (para aqueles que não permitem o uso de cookies (para concordar com olei dos cookies.. estou usando o sitehttp://www.cookielaw.org/the-cookie-law.aspx como referência)

Agora, eu tenho esse sistema para minha autenticação de cookie

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);

Então, para processar o 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!");
}

Meu objetivo geral é fornecer um recurso de login automático usando cookies. Como as pessoas devem saber que eles são essencialmente armazenados no disco rígido como texto simples .. Então, se eu incluir uma seqüência gerada aleatoriamente que será alterada em processamento adicional de cada vez (então atualizando o cookie para coincidir com o banco de dados) é uma maneira razoavelmente segura para conseguir a tarefa? Quer dizer, eu entendo que isso não é 100% seguro, pois alguns usuários podem tentar manipular a string aleatória, então eu poderia recorrer a uma chave aleatória salgada e então usarhash_hmac para sha512 o sal + chave e salve isso como o cookie ...

Minha pergunta geral, são os pedaços que eu forneci um método semi-seguro para processar logins automáticos via cookies e pode minimizar a possibilidade de alguns bandidos manipularem as chaves para obter os dados necessários?

questionAnswers(1)

yourAnswerToTheQuestion