Divi jautājumi par PHP.

Tiek skatīts 1 ieraksts (no 22 kopumā)
  • Autors
    Ieraksti
  • #151699
    guitarman
    Participant

    ÄŒau visiem,

    Taisu loginu iekš php. Viss tākā būtu ok, tikai lieta tāda ka mans logins neatšķir LV burtus kā arī CAPS. Respektīvi ja man ir lietotājs ar niku ‘ansis’, viņš var ielogoties arī kā ‘ANSIS’ vai arī kā ‘Ä€Š…Š ĪŠ ‘. Ok, tie caps var palikt, jo tik un tā negribas divus lietotājus ar vienādu vārdu, tikai vienam ir CAPS, otram nav. Bet gribētos lai logins atšķir garumzīmes un mīkstinājuma zīmes. Kādi ir varianti?

    Ä€ un vēl pie viena – kas iesācējam būtu jāzin par drošu Cookies lietošanu? Piemēram cik esmu sapratis tad vienkārši cookijā ielikt lietotāja id vai lietotāja vārdu nav prāta darbs? Hashot cookija satura vai kā?

    #242065
    Mad182
    Participant

    1) Saliec visur normālu unikoda kodējumu un nebūs nekādu problēmu ar garumzīmēm.

    2) Loginu taisīt uz cepumiem manuprāt vispār nav ne prātīgi ne ērti, apskaties sesijas.

    #242066
    guitarman
    Participant

    Mad182 – visur ir unikoda kodējums..

    Vai tad ar sesijām var panākt, ka lietotājs pēc browsera aizvēršanas un pēc tam atkal atvēršanas ir pieslēdzies?

    #242067
    Mad182
    Participant

    Nu priekš “atcerēties mani” funkcijas var izmantot cepumus, bet tur tā pat glabāsies tikai kaut kāds identifikators, nevis lietotāja parole. Tā pat sesijas var glabāt dažādi un var arī laiku dažādu norādīt.

    Un ja būtu visur unikods, tad nebūtu šādas problēmas 🙂

    #242068
    guitarman
    Participant

    Nu man ir utf-8 norādīts iekš tagiem, kā arī datubāzes konekcijas laikā norādīts lūk šis:

    mysql_query(“SET NAMES utf8”, $db_connection);

    mysql_query(“SET CHARACTER SET utf8”, $db_connection );

    Kur vēl vajag?

    #242069
    Mad182
    Participant

    Kāds ir kodējums pašai SQL tabulai?

    #242070
    guitarman
    Participant

    datubāzei un tabulai ir utf8_unicode_ci…

    #242071
    Mad182
    Participant

    Pamētģini nomainīt uz utf8_latvian_ci

    #242072
    guitarman
    Participant

    Pamēģināju, bet nekā nesanāca..

    #242073
    Creep
    Participant
    #242074
    Mad182
    Participant

    Creep, nē, runa ir par mysql vaicājumu, kur paprasot “glāžšķūņrūķīši” tiek atgriezts arī “glazskunrukisi”

    Laikam kļūdījos, un tik vienkārši vis nav. Aspkaties te: https://php.lv/f/topic/12540-mysql-un-like/

    Cita lieta – vai vispār vajag, lai var piereģistrēties divi dažādi lietotāji – “Ansis Abele” un “Ansis Ä€bele”?

    #242075
    Creep
    Participant

    Mad: biju jau sapratis savu kļūdu un iemetu linku uz mysql lapu, ceru, ka palīdzes…

    #242076
    guitarman
    Participant

    Nu logins beisiklī izskatās šādi:

    Code:


    if (isset($_POST[”submit”])) {

    $username = trim(addslashes($_POST[”username”]));
    $password = trim(addslashes($_POST[”password”]));
    $hashed_password = sha1($password);

    $result_username = mysql_query(”SELECT * FROM users WHERE username = ‘$username’ “);
    $result_password = mysql_query(”SELECT * FROM users WHERE password = ‘$hashed_password’ “);

    if (mysql_num_rows($result_username) == 0) {
    echo “Š āds lietotājs neeksistē”;
    }
    elseif (mysql_num_rows($result_username) == 1 && mysql_num_rows($result_password) == 0 ) {
    echo “Nepareiza parole”;
    }
    else {

    $lcode1 = rand(11111111,99999999);
    $lcode2 = $hashed_password;
    $login_code = $lcode1.$lcode2;

    mysql_query(”UPDATE users SET login_code = ‘$login_code’ WHERE username = ‘$username’ AND password = ‘$hashed_password’ “);
    $result = mysql_query(”SELECT * FROM users WHERE login_code = ‘$login_code’ “);
    $row = mysql_fetch_array($result);
    $login_code = $row[”login_code”];

    setcookie(”troksnis”, $login_code, time()+7200);
    header(”Location: index.php”);
    }

    }

    #242077
    guitarman
    Participant

    Ok, paldies jums abiem. Biki skaidrāks tiku..

    #242078
    Creep
    Participant

    1) Skatīt linku.

    2) Gadiem ilgā bezdarbība ir man likusi kautko svarīgu aizmirst vai arī vienkārši es nespēju izprast, kāpēc lietotājvārdu un paroli nevarēja likt vienā vaicājumā?

    #242079
    Mad182
    Participant

    Hmm, kāpēc Tu glabā paroles hešu iekš cookie? Tas nav pareizi un šajā gadījumā ir pilnīgi bezjēdzīgi.

    #242080
    root
    Participant

    Tas varbūt ir overkill, bet es vispār pēdējā laikā visus useru datus kodēju ar aes rijndael. Un cookijos glabāju authashu no statiskiem mainīgajiem, tur IP utml, kurus ir diezgan pagrūti nospoofot. Bet paroles hashu likt cookijā ir ļoti pat stulbi, nekad to nevajag darīt 😉 Tāda šņaga bija arī PHBB lidz to izlaboja, kas deva ļaunprātim iespēju tikt pie admina tiesībām. Cookijā vispār nevar glabāt ne lietotāju ne paroli, jo users var nomainīt lietotāja vārdu iekš kuukija un pie vaji projektētas sistēmas atkal tikt pie admina privilēģijām, piemēram situācija kad identificējas users ar cookie, skripts paņem no bāzes adminu listi un attiecīgi iešķiebj admina tiesības, ja vel sesijā tiek norādīts statisks variablis, kas norāda uz to ka autorizācija ir veikta un paroli parbaudit nevajag, tad vispār admina iespējas iegūt ir elementāri. Daudzi uz šito iekrīt vispār.

    Ja gribi glabāt lietotāja datus kūkijos, tev ar kādu algoritmu vajadzetu piedomāt pie šo datu kodēšanas tajā pašā AES ja pieejams mcrypt paplašinājums, piemēram to pašu rijndael. Protams ka atkal nākas izmantot hard coded statisku atslēgu, vai arī authhashu no ip utml datiem. Bet plainā glabāt šos datus ir idiotisms.

    #242081
    guitarman
    Participant

    Ok, liels paldies par padomiem 🙂 !

    Mad – neesmu vēl tik gudrs, tāpēc mēģināju tos kūkijus padarīt cik vien drošus var ar savām zināšanām.

    Bet tad vēl jautājums – ko īsti kūkijā būtu droši likt no lietotāja datiem? kā sapratu tad ar vienkāršu random ciparu kurš stāv datubāzē kamēr lietotājs ir pieslēdzies, nepietiks..

    #242082
    root
    Participant

    Glabāt jau tur var jebko. Vienkārši attiecīgi nokodē.

    https://php.net/manual/en/book.mcrypt.php

    #242083
    Mad182
    Participant

    Nu ja tev vajag vairāk vai mazāk “nejaušu” autorizācijas stringu, tad uztaisi kaut vai md5 no time un vēl kaut kā, bet ne jau paroli, bet to patiešām būtu vienkāršāk darīt ar sesiju un nekādus stringus ģenerēt arī nevajadzētu, jo php pats tev to sesijas id izdomās. Sesijās kaut ko glabāt ir krietni vien drošāk kā cepumos, jo dati glabājas uz servera, un pašam lietotājam ir tikai sesijas id, ko pie tam zagt ir diezgan bezjēdzīgi. Un arī tur, bai ze vei, nav nekādas vajadzības glabāt paroles hešu.

Tiek skatīts 1 ieraksts (no 22 kopumā)
  • Jums ir jāpieslēdzas sistēmai, lai varētu komentēt šo tēmu.
Jaunākais portālā