autoryzacja dostepu użytkownika

0

Dobra więc słowem wstępu stworzyłem aplikacje w języku JS z domieszka HTML która działa w TamperMonkey. Poszukuje od dawna sposobu na wykonywanie autoryzacji dostępu. Najlepiej gdyby działało to w MySQL w połaczeniu z PHP, dodam kod ktory napisałem, ale niestety nie działa. Drugim wariantem o jakim myślałem to recznie wrzucenie user_id w kod czyli getCookie. Dobra do rzeczy.

Jesli autoryzacja miałby się odbywać w samym JS to chciałbym aby wygladało to następująco.

Pobieranie danych z Cookies (user_id) i sprawdzanie go z tym podanym w pliku.
function check(){
if(getCookie("user_Id" == "55555")){
//wyswietl kod
}else{
alert("brak dostępu)}

chciałbym aby rozniez był stworzony plik np. lic z data wazności
czyli setCookie itd.

niestety, ale gdy implementuje to w strone ni diabla nie dziala natomiast przy sprawadzaniu tego na stronie https://www.w3schools.com/ wszystko smiga.

Druga opcja te chyba trudniejsza, ale bardziej zautomatyzowana to MySQL + PHP

W bazie MySQL znajduje sie tabela w ktorej mam zapisane ID/UserID/Pass/waznosc

i sytuacja bardzo podobna, chciałbym aby autoryzacja odbywala się poprzez cookie.

<?php
session_start();

    if (isset($_POST['login'])) {
        // include database
        include 'db-config.php';

        $user_id = mysqli_real_escape_string($conn, $_COOKIE['user_id']);
        $pass = mysqli_real_escape_string($conn, $_COOKIE['pass']);
        $Expires = mysqli_real_escape_string($conn, $_COOKIE['Expires']);

        //if input data empty retun to the login page again
        if (empty($user_id) || empty($pass)) {
            # data is empty that's why sending to login page again
            header("Location: ../index.php?nullinput");
            exit();
        }else{

            $sql = "SELECT * FROM Licencje WHERE user_id='$user_id' and pass='$pass' and Expires='$Expires'";

            // get the all users data
            $result = mysqli_query($conn, $sql);

            //now we fetch the rows
            $rowCheck = mysqli_num_rows($result);

            // we got the row, now if there is more then 0 rows that's mean it have 1 user otherwise don't have
            if ($rowCheck < 1) {
                // we don't have any users
                header("Location: ../index.php");
                exit();
            }else{
                if ($row = mysqli_fetch_assoc($result)) {
                     // now we check the password
                    $checkPwd = password_verify($pass, $row['pass']);
                    if ($checkPwd == false) {
                        # password did not mathced
                        header("Location: ../index.php?passError");
                        exit();
                    }elseif ($checkPwd == true) {
                        # password matched now session start
                        $_SESSION['user_id'] = $row['user_id'];
                        $_SESSION['Expires'] = $row['Expires'];
                        $_SESSION['pass'] = $row['pass'];

                        //session start succssfully thats mean user logged in
                        header("Location: ../dashboard.php");
                        exit();
                    }
                }
            }
        }
    }else{
        // not came here by pressed button
        header("Location: ../index.php");
        exit();
    }
?>
Function setCookie(lic, activ, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
  var expires = "expires="+d.toUTCString();
  document.cookie = lic + "=" + activ + ";" + expires + ";path=/";
}

function getCookie(lic) {
  var name = lic + "=";
  var ca = document.cookie.split(';');
  for(var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function checkCookie() {
  var user = getCookie("user_id");
  if (user == "123") {
    //dostęp
  } else {
    alert("Brak dostępu")
    }
  }
}
0

Co to znaczy ni diabla nie dziala?

0
mashtall napisał(a):

chciałbym aby autoryzacja odbywala się poprzez cookie.

Czyli, że jak mam ustawione w przeglądarce kasowanie ciastek przy zamykaniu przeglądarki, to nie będzie działać.
A jak sobie włączę edytor ciastek, to mogę się autoryzować jako dowolny użytkownik?

0

Nawet jeśli masz kasowanie ciastek to user_id o które mi chodzi na danej stronie zawsze się odnowi bo jest to część strony bez której nie da się nic zrobić :)

W każdym razie nie chodzi o to co jeśli tylko jak przerobić aby smigalo :p

0
mashtall napisał(a):

Nawet jeśli masz kasowanie ciastek to user_id o które mi chodzi na danej stronie zawsze się odnowi bo jest to część strony bez której nie da się nic zrobić :)

Czyli jak sobie wejdę w narzędzia developerskie w przeglądarce, to mogę tak przerobić ten skrypt, żeby zawsze przechodził do bloku //wyswietl kod ?

if(getCookie("user_Id" == "55555")){
//wyswietl kod
}else{
alert("brak dostępu)}


0

Nie zupełnie ponieważ ten kod będzie w całym skrypcie programu, więc nawet jak go przerobisz to po odświeżeniu strony wgra się ten ze skryptu :)

2

W takim wypadku postawię sobie lokalne proxy, które w locie podmieni mi Twój skrypt na mój - przy złych wiatrach zajmie to pięć minut roboty.

Pamiętaj: cokolwiek się dzieje po stronie użytkownika, jest niebezpieczne i poza Twoją kontrolą.

Ile pracy byś nie włożył, każdy (czyt. każdy) pojedynczy if (czyZalogowany) { ... } (po stronie użytkownika) można obejść; aby Twoja aplikacja była bezpieczna, wszystkie "sekretne" akcje powinieneś wykonywać na serwerze (na którego kod użytkownik nie ma wpływu), a do przeglądarki powinny wychodzić już policzone, gotowe dane.

0

No i dlatego właśnie myślałem o php i MySQL :p

0
mashtall napisał(a):

Nie zupełnie ponieważ ten kod będzie w całym skrypcie programu, więc nawet jak go przerobisz to po odświeżeniu strony wgra się ten ze skryptu :)

Użyję Greasemonkey i przerobię sobie automatycznie twoje skrypty przy każdym odświeżeniu strony.
Testowanie poprawności danych i autoryzowanie czegokolwiek przez JS działa tylko, jeżeli użytkownik nie jest złośliwy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1