Jak zabezpieczyć plik cookie uwierzytelniania bez SSL

Jestem w trakcie tworzenia systemu logowania, który korzysta z obu sesji (dla tych, którzy nie zezwalają na używanie plików cookie (aby zgodzić się zprawo dotyczące plików cookie.. Używam stronyhttp://www.cookielaw.org/the-cookie-law.aspx jako odniesienie)

Teraz mam ten system do uwierzytelniania plików 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);

Następnie, aby przetworzyć plik 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!");
}

Moim ogólnym celem jest zapewnienie funkcji automatycznego logowania przy użyciu plików cookie. Jak ludzie powinni wiedzieć, że są zasadniczo zapisani na dysku twardym jako zwykły tekst. Więc jeśli dołączę losowo wygenerowany ciąg znaków, który będzie zmieniany przy dalszym przetwarzaniu za każdym razem (a następnie aktualizuję plik cookie, aby pasował do bazy danych), czy jest to dość bezpieczny sposób aby osiągnąć zadanie? Rozumiem, że rozumiem, że nie jest to w 100% bezpieczne, ponieważ niektórzy użytkownicy mogą próbować manipulować losowym ciągiem, więc mógłbym uciec się do soli, losowego klucza, a następnie użyćhash_hmac sha512 soli + klucz i zapisz to jako ciasteczko ...

Moje ogólne pytanie, czy kawałki, które dostarczyłem, są pół-bezpieczną metodą przetwarzania automatycznych loginów za pomocą plików cookie i mogą zminimalizować możliwość manipulowania kluczami przez złych facetów w celu uzyskania wymaganych danych?

questionAnswers(1)

yourAnswerToTheQuestion