- Hosszú idő után újabb előzetest kapott a Gothic Remake
- Hivatalosan is bemutatkozott a Kingdom Come Deliverance 2
- Rövid teaser trailert kapott a Dragon Age: Dreadwolf
- EAFC 24
- GTA VI
- Alkoholista nevelde
- Nintendo Switch
- PlayStation 5
- Teljes verziós, ingyenes mobil játékok és alkalmazások
- PlayerUnknown’s Battlegrounds
Új hozzászólás Aktív témák
-
MODERÁTOR
válasz CSorBA #11247 üzenetére
Fogod a felhasználó ip címét meg mondjuk a user agentet, majd hasheled. Eltárolod az adatbázisban és összehasonlítod a kettőt. Ha ok akkor tovább engeded, ha nem akkor pedig kilépteted erőszakosan. Én így oldottam meg.
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
-
CSorBA
őstag
Brown ügynök:
Szóval kb annyit csinálok, hogy:1, Berakom a sessiont tartalmát egy változóba.
2, Változtatok sessionid-t.
3, Visszarakom a változóból a tartalmat az új sessionba.mobal:
Ok, ezt berakom. Végül is elég valószínűtlen, hogy valaki folyamatos IP-t váltogató mobileszköztől akarna belépni.
De nem elég ezt is a sessionban tárolni? Miért rakjam adatbázisba?
Ha ellopja a támadó még is a sessionid-t, akkor összehasonlításkor a sessionban tárolt md5 hashelt useragent és ip úgysem fog stimmelni. Miért queryzzek még db-ből?[ Szerkesztve ]
-
MODERÁTOR
válasz CSorBA #11253 üzenetére
Szia!
Konkrétan csinálsz egy tokent és azt tárolod az adatbázisban. Minden információval. Szerintem így a legmegbízhatóbb. Ha változik a token, bejelentkezik újra akkor frissíted. Adatbázis pont a hackelések kikerülése végett lenne! (Ha rosszul gondolom légyszíves javítsatok ki!)
mobal,
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
-
CSorBA
őstag
Ezzel nem teljesen értek egyet, bár az is lehet, hogy én gondolom rosszul.
Szerintem a SESSION biztonságosabb, mint az adatbázis, de csak abban az esetben, ha védjük a SESSION id lopásától. (most tételezzük fel, hogy a szerveren teljesen védve van a sessiont tároló fájlrendszer)
Itt eleve pont ettől védem. Nézzük mi van a sessionunkban:
- ugye alapból van neki egy id-je
- userid (ha ez létezik, akkor be van lépve, illetve tudom, hogy kiről van szó)
- security_token - md5(IP-USERAGENT)Minden oldalletöltésnél legenerálom a felhasználóm (vagy támadóm) md5(IP-USERAGENT) hashét, és összehasonlítom a jelenlegi SESSION-ban security_tokenjével. Ha nem egyeznek, kidobom.
Ha ellopja a session id-t, akkor jó esetben el fog térni ez a security_token. És kidobom.
Emellett csinálhatom azt, amit Brown Ügynöknek írtam, hogy folyamatosan változtatom a SESSION id-t.
Most nem értem, miért kellene adatbázisban tárolnom? Ha ellopja az id-t, és még sikerült ugyanazon ip-t, user agentet is előállítania, akkor már olyan mindegy, hogy db-ből nézem, vagy sessionból. (de pont ezt fogom megakadályozni a folyamatos id váltással) Feleslegesnek érzem a táblás tárolást.
Az már más kérdés, hogy mi van akkor, ha folyamatosan váltom az id-t, és a támadom ÉPPEN elkapja a jót, épp belép, épp oldalt tölt le, és Ő fogja megkapni onnantól a valid id-t, és a felhasználómat vágja ki... Bár valljuk be, ennek nagyon kevés esélye van. Az alábbiaknak kellene teljesülni:
- Hálózati forgalom figyelésével, két oldalletöltés között elkapni a session id-t.
- Egy ip-ről lenni.
- Eltalálni a User agentet. -
Brown ügynök
senior tag
válasz CSorBA #11253 üzenetére
Én is adatbázist használok, mert olvastam, hogy a $_SESSION tömb tartalmának előállítása fájlműveleteken alapul és sok adat esetén belassulhat. Adatbázist használva szerintem, strukturáltabb is lesz a kód.
Egy tapasztaltabb embert én is szívesen meghallgatnék ez ügyben.
"hacsak nem jön a jó tündér break utasítás képében..."
-
MODERÁTOR
válasz CSorBA #11255 üzenetére
Igazándiból értem amit mondasz, írsz én a Framework gyári megoldását használom ami ilyen. (Pontosabban a bejelentkezési token tárolása, user-agent és egy hash külön, x -től y ideig, a remember funkciójára, de akár ellenőrzésre is használható)
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
-
válasz Brown ügynök #11256 üzenetére
Adatbázist használva is van serialization, disk művelet, de még a remote call is befigyel, szóval gyorsabb nem lesz.
---
A session-kezelést illene szétválasztani:
"Adott felhasználó bejelentkezve tartása"
AdattárolásAz elsőhöz először az kell, hogy párhuzamosan menjen adatbázisban és cookie-ban is a session-kulcs kezelése:
Adatbázisban: session-kulcs, user ID, valamilyen gépazonosító (IP, user agent), létrehozás dátuma, lejárat dátuma, perzisztens-e
Sütibe: egyedül a kulcsot kell leküldeni (megfelelő lejárati dátummal, HTTP only, miegymás)Kulcsnak teljesen mindegy, ki mit használ, annyit kell csak figyelembe venni, hogy az adott környezetben lehetőleg egyedi legyen, pl. egy V4-es GUID teljesen jó.
Ennek cseréjét mindenképpen meg kell oldani, hiszen van 2 pont, ahol mindenképp kell: bejelentkezés és a kijelentkezés.Az adatbázisban a session lejárati idejét változtatni kell, amennyiben a session nem perzisztens: mindig ki kell tolni annyival a lejárati időt, amennyivel akarjuk (mondjuk 20 perc), minél hosszabb ez az idő, annál nagyobb a biztonsági kockázat (esetleg pl. akkor, mikor úgy jön a kérés, hogy már csak 1 perc van hátra a lejáratból, akkor cserélünk egy session id-t is).
Az adatok mentése már egy más dolog, ott annyit kell tennünk, hogy meg kell felelni az adott PHP elvárásainak (5.4-ben megjelent interface már említve lett), ez pl. adatbázisba mentés esetén azt jelenti, hogy meg kell oldanunk az adatok serialization-jét és az adatbázisba való benyomását (pl. egy TEXT típusú mezőbe a session id-hoz kötve).
Ha valaki ki akarja védeni a man-in-the-middle támadást, akkor használjon SSL-t.
-
Brown ügynök
senior tag
válasz Peter Kiss #11258 üzenetére
"Adott felhasználó bejelentkezve tartása" - igen, erről beszéltünk. E területen a megoldási elveink egyeznek pl.: sütibe csak session kulcs.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Bárkinek érdekes lehet: PHP Authentication Class
A kérdés megválaszolója mondhatom, hogy a szívemből szólt.
[ Szerkesztve ]
-
Lacces
őstag
válasz Peter Kiss #11261 üzenetére
Hm, érdekes.
Lenne pár kérdésemAmúgy egy Auth osztálynál, amit valszeg már nem fog tovább kiterjeszteni ( alosztályt létrehozni belőle), azt miért nem zárja le final kulcsszóval?
Másik kérdésem, adatbázis kapcsolódásnál, miért nem használja a singleton minta implementálását?
-
válasz Lacces #11262 üzenetére
Azt, hogy mit zársz le, és mit nem, nehéz kérdés, általában érdemes arra törekedni, hogy kiterjeszthető legyen majdnem minden osztály, de a kötelező dolgokat ne ronthassa el senki sem.
A singleton faszság, azért. Ha singleton-szerű működést akarsz, akkor használj dependency injection container-t (de egyébként is érdemes).
---
Egyébként a válaszoló is csinál érdekeset, a beállítások betolásának biztosan nem így kellene lennie (parse_ini_file-os történetre gondolok), illetve szerintem ctor-ban nem szabad kapcsolódni az adatbázishoz (én is csinálok ilyeneket, de fokozatosan jövök le a cuccról).
[ Szerkesztve ]
-
Lacces
őstag
válasz Peter Kiss #11263 üzenetére
Öhm, a DIC-hez tudnál adni tutorial anyagot? Megleltem a te írásodat is, de úgy igazából nem bírtam felfogni... Lehet, kell egy kis idő.
Amúgy van különbség a sima dependency injection és dependency injection container között?A final-t pedig én azért tartom jónak (most kis mongodbs kitérővel ugyan, de Java-t rágom át újból) mert a Java-nál volt erről szó, hogy minden osztályból, amiből nem képzünk további alosztályt, azt érdemes final-ba rakni, hogy ne képezzenek belőle alosztályokat/alpéldányoka. Így megakadályozható, hogy futási időben a hierarchiában felette lévő osztályokhoz hozzáférjén...
Bár eddig még Yii-nél csináltam pár ilyen kis alkalmazást, ott még nem jelzett hibát, de majd meglátom, mit hozz a jövő ez ügyben . -
biker
nagyúr
facebook login más oldalon keresztül --- kapcsolatosan kérdezhetek, vagy túl offline lenne?
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
válasz Lacces #11264 üzenetére
A dependency injection-ben semmi sötét mágia nincs, annyiról szól, hogy egyértelműen megmondod, mi kell az adott objektumot létrejöttéhez/működéséhez, vagy épp egy metódus működéséhez ahelyett, hogy valami kiskaput válassz: ez lehet a new operátor (pfuj ) vagy épp az említett singleton vagy singleton-jellegű global object. Constructor-okban lehet sokszor olyat látni, hogy a paraméterlistája tök üres, de van benne vagy 5-ször valamilyen példányosítás new-val vagy mással (ez egyébként amiatt is bukta megoldás, hogy a ctor-okban nem végzünk semmilyen műveletet gyakorlatilag [példányosítás, adatbázishoz kapcsolódás, bármi ilyesmi]).
A container ezen csak annyit segít, hogy ne kelljen annyit írnod, hogy egészen egyszerű legyek. Ha lenne egy olyan osztályod, aminek a ctor-a kérnek másik 3 objektumot, akkor nem szívesen írnál ilyeneket mindenhol, ahol kellene:
new (new (), new (), new ())
A container-ek ezen tudnak segíteni: az adott megoldás leírását használva felépíted, hogy, ha valaki X objektumot kér, akkor annak a függőségeit hogyan oldja fel, és utána csak ennyit kell írnod:
container.GetService(type)
Általában a container-ekhez járnak különböző lifetime service-ek (vagy írhatsz sajátot), ilyennel tudsz singleton-féle működést előidézni.
---
Az a final indoklás nem győzött meg, teljes osztályt szerintem a legritkább esetben kell lezárni. Ha azt szeretnéd, hogy valami az öröklődés ellenére is változatlan maradjon, azt rakd private-re vagy final-re, és kész.
-
Tele von Zsinór
őstag
válasz Lacces #11264 üzenetére
Ezt a cikksorozatot ajánlom, Fabien Potencier írta, aki például a symfony keretrendszer eredeti szerzője. What is Dependency Injection?
-
Lacces
őstag
válasz Tele von Zsinór #11267 üzenetére
Fúúú, ez nagyon állat! Nagyon tetszik ahogy elmagyarázza, milyen problémákba ütközhetünk a jövőben (adatb, memóriában tárolás) stb. Köszönöm!
és Athlon64+ Neked is köszönöm a magyarázatot, így már értem.
A két írás sokat segített
Akkor így összeségében ez a tervezési minta a legalkalmasabb egy adatbázis kapcsolat felépítésére?
[ Szerkesztve ]
-
-
Sk8erPeter
nagyúr
válasz Peter Kiss #11263 üzenetére
"fokozatosan jövök le a cuccról"
Kitartás, minden csak akaraterő kérdése!Sk8erPeter
-
KKope
tag
Sziasztok!
Szeretnék kérni egy kis segítséget azzal kapcsolatban, hogy egy raktárprogramban adatbázisában szeretném megcsinálni az eszközmozgást.
A táblákat csatoltam.
Én igy gonodltam a táblákat. A mozgasfej tába tartalmazná maga a mozgás tulajdonságait.
A mozgas tét pedig a bizonylatszám alatti téteteleket (cikkszámokat) Ezt azért csináltam így mert ugye egy bizonylatszám alatt több tételt is mozgathatunk.A mozgasfej táblába ID-kat töltünk.
A kérdésem, ha PHPben szeretném kilistázni a mozgásfej tartamát akkor azt hogy tudom megcsinálni. Ha csak simán kilistázom a tábla tartalmát az ugye nem jó mert ott ID-k szerepelnek. Igazából én az ID-hoz tartozó megnevezéseket szeretném kiíratni.
Ehhez milyen lekérdezést/php kódot kell alkalmaznom az űrlapon?[ Szerkesztve ]
-
Soak
veterán
Ez inkább adatbázis kérdés, de van több megoldás is, az egyik az, ha listázod (gondolom foreachel probálkozol) akkor a $mozgas_fej->id; nem lesz kiírva vagy eleve úgy kéred le adatbázisból, hogy pl SELECT honnan,hova,szallito_id,jelleg_id,datum FROM mozgas_fej (ez MySQL kód).
Szerk: Most ujra elolvasva a kérdésedet rájöttem, hogy félreértettelek, akkor ezt egy JOIN-al kell megoldanod .
[ Szerkesztve ]
-
Lacces
őstag
Valami ilyemsi lekérdezés kell neked:
SELECT sz.szallitonev, t.telephelynev, th.telephelynev, mt.cikkszam, j.jellegnev, m.datum
FROM mozgas_fej as m
LEFT JOIN szallito as sz ON sz.szallito_id=m.szallito_id
LEFT JOIN telephely as t ON t.telephely_id = m.honnan
LEFT JOIN telephely as th ON th.telephely_id = m.hova
LEFT JOIN mozgas_tetel as mt ON mt.bizonylatszam = m.bizonylatszam
LEFT JOIN jelleg as j ON j.jelleg_id = m.jelleg_idHa így nézz ki a táblád, frissítsd, én a honnan, hova mezőket átírnám: kezdohely, veghely vagy valami ehhez hasonló. Ha a lekérdezésben rövidítést szeretnék használni, akkor ott erősen bekavarhat. Plusz a külön tábláknál, mint a szallito, jelleg, stb. lehetne sima 'id' mezők is... Egy ennyire szétszedett adatbázis szerkezetnél felesleges
[ Szerkesztve ]
-
KKope
tag
válasz Lacces #11273 üzenetére
Igen, valószínűleg erre lesz szükségem.
$list = mysql_query ("SELECT sz.szallitonev, t.telephelynev, th.telephelynev, mt.cikkszam, j.jellegnev, m.datum
FROM mozgas_fej as m
LEFT JOIN szallito as sz ON sz.szallito_id=m.szallito_id
LEFT JOIN telephely as t ON t.telephely_id = m.honnan
LEFT JOIN telephely as th ON th.telephely_id = m.hova
LEFT JOIN mozgas_tetel as mt ON mt.bizonylatszam = m.bizonylatszam
LEFT JOIN jelleg as j ON j.jelleg_id = m.jelleg_id)");
while ( $row = mysql_fetch_array ($list))
pl: echo $row[szallitonev]Sajnos a lekérdezés nem ad semmi eredményt.
Hol rontottam el?
-
Sk8erPeter
nagyúr
Csatlakoztál egyáltalán az adatbázishoz előtte?
Egyébként az egyértelműség érdekében javítsd mysql_fetch_assoc()-ra, ÉS stringszerűen használd, ne úgy, ahogy most csinálod:
echo $row[szallitonev];
HELYETT
echo $row['szallitonev'];Sk8erPeter
-
KKope
tag
válasz Sk8erPeter #11275 üzenetére
Persze
Amit Lacces kolléga írt azt bemásoltam a MYSQL cmd-be és ott sem fut le.
[ Szerkesztve ]
-
KKope
tag
válasz Sk8erPeter #11275 üzenetére
OK, működik!
Szintaktikai hiba volt
MÁS KÉRDÉS:
PHPMYADMIN FELÜLETLEN HOGY ÁLLÍTOK BE EGY-SOK KAPCSOLATOKAT A TÁBLÁK KÖZÖTT?
KKope
-
-
vakondka
őstag
Sziasztok,
Ismeri valaki a Google Rich snippets-et?
Próbáltam beilleszteni egy webshopban a termék részleteinél a szükséges adatokat,
de az árat nem akarja mutatni, pedig elvileg megtalálja a weboldalonEzt írja a teszt végén:
Figyelmeztetés: In order to generate a preview with rich snippets, either price or review or availability needs to be present.
Pedig ott van a price is, meg az availability is...szóval nem értem mi a gond...Ez a link az adott oldal teszteléséhez: [link]
Bármi ötlet?
https://toptarget.hu - Online Marketing Ügynökség
-
aktív tag
Hello
Lenne egy olyan kérdésem hogy milyen technikai hátránya van az ékezetes változónevek használatának?
Nem akarok ilyesmit csinálni mielött valaki belekezdene de mindenki úgy fél tőle mint ördög a tömjéntől de nem találtam konkrét infót arról hogy miért rossz ez.
Köszi előre is a válaszokat!Youth hides the key to salvation
-
-
aktív tag
válasz Peter Kiss #11281 üzenetére
En ugy tudtam lehet.
[link]És általában, ha programozol, érdemes mindent angolul elnevezni, hogy gyakorlatilag bárki megértse?
Jo valasz csak nem ez lenne a kerdes. Olyan problemak erdekelnenek amik azon tul elojonnek hogy valaki nem erti meg egy ekezetes valtozo nevet.Youth hides the key to salvation
-
PazsitZ
addikt
válasz DelArco #11282 üzenetére
Lehetni lehet.
De a szabványok nem viccből vannak kitalálva. Ettől függetlenül elvileg lehet ciril betűs kódot is írni, meg magyar ékezetest is, csak nem érdemes.Egyébként már pont a linked első hozzászólásában van 1-2 példa miért nem biztos, hogy ez jó ötlet.
Az az érv, hogy te magyar vagy és nem tudsz angolul, meg szebb a magyar ékezetes szöveg, hát hogy is mondjam..., inkább nem mondom .
[ Szerkesztve ]
- http://pazsitz.hu -
-
aktív tag
-
Speeedfire
nagyúr
.
[ Szerkesztve ]
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Sk8erPeter
nagyúr
válasz DelArco #11282 üzenetére
Lehet ékezetes változókat használni. De tényleg nem értelek. Már pont elkezdtem volna leírni jópár szempontot, ami miatt kifejezetten kerülendő az ékezetes változónevek használata, de most látom, hogy a szempontok pont az általad linkelt cikkben van leírva. Akkor mi a kérdésed?
Na mindegy, ha már leírtam (de nem folytatom akkor a sort, mert ott van minden egyéb szempont is a linkednél):
Pl. ha kiadod egy amerikai ügyfélnek az ékezetekkel teleb@szott kódodat, akkor az szerinted melyik éghajlatra fog küldeni, és miket fog mondani a szüleidről? Mit csinálsz, ha olyan billentyűzet-kiosztás előtt vagy, ahol nincsenek ékezetek? Mit csinálsz, ha épp olyan konzolról (pl. SSH-n bejelentkezel vhova) kell kódot megírni vagy változtatni, ahol az ékezetek nem támogatottak, vagy helytelenül jelennek meg? Vagy ha van olyan asztali kliens kódszerkesztőd, ahol ugyanez a helyzet? Ez csak egy pár darab szempont a rengeteg közül, de első körben ennyi elég lesz.Sk8erPeter
-
aktív tag
válasz Sk8erPeter #11286 üzenetére
Bocs befejezem inkább úgy látszik túlságosan bonyolult vagy értelmezhetetlen kérdést tettem fel.
Youth hides the key to salvation
-
PazsitZ
addikt
válasz DelArco #11287 üzenetére
Nem tudom mit vársz, felteszel egy kérdést, amit önmagad egy linkkel megválaszolsz.
Erre írjuk, hogy ott van a linkben a válasz, felmerült itt leírt példa is.
Mit vársz még? Tovább megyek, ha nem akarod használni, minek érdekel egy ilyen szélsőséges érdektelen probléma/kérdés?- http://pazsitz.hu -
-
Sk8erPeter
nagyúr
válasz DelArco #11287 üzenetére
Még egy az előzőn kívül: már meg lett válaszolva a kérdésed, csak úgy tűnik, neked nem sikerült felfogni. (ne a válaszadók szellemi képességeit vond kétségbe plíz)
Az általad "technikai hátránynak" nevezett valami épp az UTF-8-karakterek támogatottságának esetleges hiánya.
Ha ez sem elég az előzőeken kívül, akkor tényleg jobb, ha befejezzük a témát.Sk8erPeter
-
Speeedfire
nagyúr
Feltett egy egyszerű kérdést, erre mindenki nekiesik...
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
fordfairlane
veterán
-
Speeedfire
nagyúr
válasz fordfairlane #11293 üzenetére
Olyan a fórum, ahogy a felhasználók használják.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
fordfairlane
veterán
válasz Speeedfire #11294 üzenetére
Hát én már ritkán használom, mert gusztustalan, ami itt folyik.
x gon' give it to ya
-
-
Sk8erPeter
nagyúr
válasz fordfairlane #11295 üzenetére
Ha megnézed, kapott válaszokat, csak furán reagált, ha mondta volna, hogy "de nem ezt értem 'technikai hátrányok' alatt, hanem azt, hogy...", akkor no para. Amúgy tényleg elharapózott mostanság egy kis feszkó itt a fórumon, oké, mondd ki, hogy én is tehetek róla. (de asszem nem csak az én saram, ha visszanézel )
[ Szerkesztve ]
Sk8erPeter
-
Speeedfire
nagyúr
Relatív időt szeretnék kinyerni egy dátumból. Ezt találtam rá, de nem működik. Esetleg valakinek más forrása nincs?
példa
$id = "2012-08-17 19:20:35";
echo valami($id); //1 hónapjaFotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
válasz Speeedfire #11298 üzenetére
Itt a timespan() függvényt bányásznám elő.
-
Speeedfire
nagyúr
válasz Peter Kiss #11299 üzenetére
Hát, én nem is találom ennek a forrását.
Ezt találtam, ez működik is legalább.Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
Új hozzászólás Aktív témák
- Székesfehérvár és környéke adok-veszek-beszélgetek
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Hosszú idő után újabb előzetest kapott a Gothic Remake
- Xbox tulajok OFF topicja
- exHWSW - Értünk mindenhez IS
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Hivatalosan is bemutatkozott a Kingdom Come Deliverance 2
- Rövid teaser trailert kapott a Dragon Age: Dreadwolf
- Fotók, videók mobillal
- További aktív témák...
- LG NanoCell 55NANO766QA Halvány píxel csík
- Philips 58PUS8545/12 1 ÉV GARANCIA Játék üzemmód
- Tyű-ha! HP EliteBook 850 G7 Fémházas Szuper Strapabíró Laptop 15,6" -65% i7-10610U 32/512 FHD HUN
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- The Last of Us Part I Ps5