Spletno programiranje - Drugo Flashcards
Kje se izvajajo PHP, JS, MySQL, HTML in CSS?
Na strežniku:
* PHP se izvaja na strežniku z uporabo programskega jezika, kot je Apache. Na strežniku se obdelujejo PHP datoteke in se generira odziv, ki se nato pošlje odjemalcu (npr. spletnemu brskalniku).
* MySQL na strežniku. Strežnik MySQL obravnava poizvedbe in upravlja z bazo podatkov. Programi, napisani v drugih jezikih, kot je PHP, lahko vzpostavijo povezavo z MySQL strežnikom in izvajajo poizvedbe ter manipulirajo podatke v bazi.
Na spletnem brskalniku:
* JavaScript se izvaja v spletnem brskalniku uporabnika.
* HTML datoteke se naložijo v spletni brskalnik uporabnika in se analizirajo ter pretvorijo v prikazano vsebino na spletni strani.
* CSS datoteke se naložijo skupaj z HTML datotekami v spletni brskalnik.
Za kaj uporabljamo PHP, JS, MySQL, HTML in CSS?
PHP (Hypertext Preprocessor): Koda?
JavaScript: omogoča interaktivnost in dinamičnost na strani.
MySQL: Strežnik MySQL
obravnava poizvedbe in upravlja z bazo podatkov.
HTML (Hypertext Markup Language): je jezik za označevanje vsebine spletnih strani.
CSS (Cascading Style Sheets): se uporablja za slogiziranje in oblikovanje HTML vsebine.
Kaj je hashiranje gesel in kateri algoritem uporablja?
Hashiranje gesel je praksa šifriranja gesel, pri kateri se geslo pretvori v niz znakov fiksne dolžine, imenovan “hash”. Hash funkcija sprejme vrednost in jo pretvori v niz znakov določene dolžine.
Uporablja SHA-256 algoritem, ki pretvori vhodno vrednost (geslo) v 256-bitni odtis.
Zakaj samo hashiranje gesel ni varno?
Ob preverjanju se geslo, ki ga uporabnik vnese, ponovno hashira in primerja z vrednostjo, ki je shranjena v bazi podatkov. To ni dovolj zaradi napadov, kot je napad z uporabon predizračunanih tabel (rainbow table attack) ali napad z grobo silo (brute-force attack).
S čim povečamo varnost hash gesel in kako delujejo te metode?
2 stvari
Soljenje (salting) in iterativno izvajanje hash funkcije sta dodatna varnostna ukrepa.
Soljenje je postopek dodajanja dodatnih naključnih podatkov (sol, salt) k geslu pred
hashiranjem. Ob preverjanju gesla se uporabi enaka sol za
ponovno izračunavanje hasha in primerjanje z vrednostjo v bazi podatkov. Soljenje preprečuje, da bi napadalec uporabil predizračunane tabele za razbijanje gesel (rainbow tables) in otežuje napade z uporabo skupnih gesel.
Iterativno izvajanje hash funkcije pomeni, da se hash funkcija izvede večkrat zaporedoma na istem geslu. Namen je povečati čas izvajanja hash funkcije, kar otežuje napade z grobo silo, ki
poskušajo preizkusiti veliko število možnih gesel v kratkem času.
Kaj je nekaj ključnih metod za zaščito gesel?
8 🌿🧂 🧬🚫🛰️🔄🔒🧽
- Uporaba varne hash funkcije, kot so bcrypt, posebej zasnovane za shranjevanje gesel. Te funkcije uporabljajo soljenje, iterativno izvajanje in prilagodljivo obremenitev za povečanje varnosti gesel.
- Soljenje gesel
- Spodbujajte uporabnike, da ustvarijo dolga in kompleksna gesla, ki vključujejo kombinacijo črk, številk in posebnih znakov.
-
Omejite število neuspešnih poskusov pri prijavi, da preprečite napade z grobo silo. Na primer, po nekaj neuspelih poskusih lahko za določeno
obdobje onemogočite nadaljnje prijave za določenega uporabnika ali IP naslov. - Uporabite SSL/TLS za šifriranje komunikacije med strežnikom in odjemalcem. Tako se prepreči prestrezanje in nepooblaščeno branje gesel med prenosom.
- Redno posodabljanje in vzdrževanje: Poskrbite, da boste redno posodabljali PHP in druge
uporabljene knjižnice, ter varnostne posodobitve. -
Zaščita baze podatkov: Zagotovite ustrezno varnost baze podatkov, da preprečite
nepooblaščen dostop do gesel. Uporabite ustrezne ukrepe, kot so ustrezna avtentikacija,
uporaba pripravljenih izjav in preprečevanje injekcij SQL. - Izogibajte se shranjevanju gesel v čisti obliki : Nikoli ne shranjujte gesel v čisti obliki v bazi podatkov ali katerem koli drugem shranjevališču.
Zakaj MD5 ni več varen?
3
-
Hitrost izračuna: MD5 je zelo hiter algoritem za izračunovanje hash vrednosti. To pomeni, da je
občutljiv na napade z močjo. -
Kriptografska trdnost: MD5 ni zasnovan kot kriptografska hash funkcija, kar pomeni, da nima
ustrezne odpornosti proti napadom, kot so trčenja (collision attacks). Trčenje se zgodi, ko dva različna vhoda proizvedeta enako hash vrednost, kar omogoča potencialne napadalce, da
odkrijejo prvotni vhod iz znane hash vrednosti.
Spletno programiranje 4 -
Povratni inženiring gesel: mogoče je s pomočjo posebnih tehnik povratnega inženiringa in napadov z močjo razkriti prvotna
gesla iz njihovih hash vrednosti. Napadalec lahko tako pridobi
hash vrednost gesla in poskusi razkriti prvotno geslo s preizkušanjem različnih kombinacij.
Kaj je MD5?
MD5 (Message Digest Algorithm 5) je kriptografska hash funkcija, ki je bila razvita pred več kot 30 leti. Vendar pa se je v zadnjih letih razkrilo več pomanjkljivosti in ranljivosti, zaradi katerih ni več varen za zaščito gesel in drugih občutljivih podatkov.
Kaj so primeri varnih hash funkcij? Zakaj?
3
SHA-256, bcrypt ali Argon2
Te funkcije so
oblikovane z upoštevanjem sodobnih varnostnih smernic ter so bolj odporne proti napadom z močjo
in trčenjem ter zagotavljajo višjo stopnjo varnosti za shranjevanje gesel.
Katere smernice je vredno upoštevati, da bi preprečili napade SQL injekcij?
(6) Ta je zajebana. 📝 ⚔️🚰⛔👥🛡️
- Uporabite pripravljene izjave (prepared statements) ali parametrizirane poizvedbe 📝
- Uporabite varnostne funkcije baze podatkov ⚔️
- Preverite in filtrirajte vhodne podatke 🚰
- Omejite privilegije dostopa do podatkovne baze ⛔
- Uporabite različne uporabniške vloge 👥
- Uporabite sistemsko zaščito 🛡️
Kaj sta GET in POST?
$_GET and $_POST sta globalni spremenljivki, kar pomeni da delujeta povsod in ju lahko prikličemo v katerikoli funkciji, razredu ali datoteki.
$_GET je niz spremenljivk, posredovanih trenutnemu skriptu prek parametrov URL.
$_POST je niz spremenljivk, posredovanih trenutnemu skriptu prek metode HTTP POST.
Kdaj uporabimo GET in kdaj POST?
Podatki, poslani iz obrazca z metodo GET, so vidni vsem (vsa imena in vrednosti spremenljivk so prikazana v URL-ju). GET ima tudi omejitve glede količine informacij za pošiljanje (2000 znakov).
GET se lahko uporablja za pošiljanje neobčutljivih podatkov. GET se NIKOLI ne sme uporabljati za pošiljanje gesel ali drugih občutljivih informacij.
Informacije, poslane iz obrazca z metodo POST, so nevidne za druge (vsa imena/vrednosti so vdelana v telo zahteve HTTP) in nimajo omejitev glede količine informacij za pošiljanje.
Kdaj uporabimo GET in kdaj POST?
Podatki, poslani iz obrazca z metodo GET, so vidni vsem (vsa imena in vrednosti spremenljivk so prikazana v URL-ju). GET ima tudi omejitve glede količine informacij za pošiljanje (2000 znakov).
GET se lahko uporablja za pošiljanje neobčutljivih podatkov. GET se NIKOLI ne sme uporabljati za pošiljanje gesel ali drugih občutljivih informacij.
Informacije, poslane iz obrazca z metodo POST, so nevidne za druge (vsa imena/vrednosti so vdelana v telo zahteve HTTP) in nimajo omejitev glede količine informacij za pošiljanje.
Naštej 4 najbolj uporabljene globalne spremenljivke
$_SERVER
$_POST
$_GET
$_COOKIE
Kakšno sintakso uporablja JavaScript?
podobno sintakso kot ostali programski jeziki, kot so C, C++ in Java.
Programski kod je običajno vdelan v HTML datoteko med oznako
..., ali pa je shranjen v ločeni JavaScript datoteki in se nato poveže z HTML datoteko.