hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.29. 13:38



Jelenlévő felhasználók

Jelenleg 356 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 356 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 4 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Biztonságos Mód a Küldséhez
HozzászólásElküldve: 2017.10.17. 20:21 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2014.05.01. 13:18
Hozzászólások: 627
Megköszönt másnak: 61 alkalommal
Megköszönték neki: 104 alkalommal
Üdv!

Van nekem egy index.php fájlom. Ebben a fájlban szeretnék kiíratni sok-sok dolgot. Ugye a részeknek ID-t adva JS-en keresztül tudok módosításokat végrehajtani bizonyos helyeken. (innerHTML) Emellett adott nekem egy function.php fájl amit az index.html fájlból szeretnék elérni. Teszem azt készítek egy gombot amit JS-ben lefuttatja a function.php?user=johancorn&task=kill URL-t és a visszaérkező dolgokat meg lecserélem egy a már fent említett ID alapján. (Jelenlegi tudásom szerint csak így tudok újratöltés nélkül értékeket módosítani az oldalamon. (Ez elengedhetetlen számomra.)

A hiba már egy bejegyzéssel ezelőtt felvetettem. Ha bárki megnyitja böngészőjén az címet, és saját maga ad meg paramétereket bármit le tud futtatni esetlegesen egy adatbázison is.

Ezúton szeretnék érdeklődni, hogy erre mi a legtisztább mód, sok-sok dolog után jártam már, de nem tudok zöld ágra vergődni vele.

[profil]Silent[/profil]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Biztonságos Mód a Küldséhez
HozzászólásElküldve: 2017.10.18. 08:53 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
A REST backend lényege, hogy teljesen stateless legyen. A felhasználó belépéskor azonosítja magát a backenden, ami válaszol egy JWT-vel (Javascript Web Token). A kliens lementi ezt a tokent és minden védett endpointra elküldi az Authorization header-rel együtt, így a backend mindenféle session nélkül tudja azonosítani, hogy a felhasználó létezik-e, van-e joga az adott contenthez, benne van-e még az időkorlátban.

Ami számodra érdekes lehet ebben a példa projektben, az a routes.php . Itt van eltárolva az összes endpoint. A legelső az az auth. Ide küldi el a felhasználó a belépési adatait, hogy azonosítsa magát. A mögöttes logikát az AuthController.php-ban találod meg.

Ezután az összes védett endpointhoz hozzáadtam a jwtRequired() fgv-t, ami egy JWT middlewaret ad hozzá az endpointhoz, így csak akkor éri el a user, ha érvényes tokent küldött a HTTP fejlécben.

https://github.com/Hienz/hlmod_example

Ami még talán megkönnyíti a dolgod, az a jQuery / angular promise-ok használata.

jQuery példa:

Kód:
   $.get( "php_utvonal.php", function( data ) {
      $( ".valami_element" ).html( data );
      alert( "Betöltés megtörtént.." );
   });


Könnyebben lekódolható, teljesen async HTTP kérés..
Igen, ez sokkal egyszerűbb, viszont én még mindig azt mondom, hogyha van rá lehetőséged, angulart használj, mert ott alapelv a SPA (Single Page Application), tehát az újratöltődés nélküli alkalmazások.

Angularnál már jelen vannak a singleton service-ek és factoryk, adott view-khoz való példány-controller csatolás (tehát egy adott view-hoz hozzárendelhetsz mögöttes javascript logikát, ha pedig több view-hoz ugyanazt a logikát rendeled, akkor azok új példányt kapnak a controllerből), view és controller közötti kommunikáció ($scope), valamint rengeteg olyan dolog, ami egyébként órányi kódolás lenne. Ha gondolod összepakolhatok egy alap angular skeletont, amit aztán tudsz használni, ha pedig elakadás van, szólj és segítek.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Biztonságos Mód a Küldséhez
HozzászólásElküldve: 2017.10.18. 16:36 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2014.05.01. 13:18
Hozzászólások: 627
Megköszönt másnak: 61 alkalommal
Megköszönték neki: 104 alkalommal
Köszönöm! Kezdetnek arra gondoltam, hogy megtekintem az általad mellékelt csatolmányt így felmásoltam localhost-ra, azonban halvány lila gőzöm sincs, hogy hogyan tudom működésre bírni legalább a példa erejéig. :?:

Érdekesség, hogy felmásolás után próbáltam az index.php-t futtatni, de egy HTTP ERROR 500-as hibát jelzett. Feltételezem a kód rendben van csupán nem vagyok elég tapasztalt ezen a téren.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Biztonságos Mód a Küldséhez
HozzászólásElküldve: 2017.10.18. 20:01 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Igen, elfelejtettem elmondani pár dolgot.

Először is ahhoz, hogy a vendor mappát letöltsd, ki kell adnod a mappában egy `composer install` parancsot. Ezután a settings.php-ban átírni az adatbázis adatokat, valamint igazából létre kéne hozni a táblákat is, ami picit hosszadalmas lenne (kivenni a live adatokat, hogy importálhasd stbstb).

Holnap ha lesz időm bent, akkor átküldöm a táblákat. Ha minden megvan, az index.php nyitásakor valahogy így kell kinéznie az eredménynek:

Kép

Itt nem az index.php a lényeg igazából, mert ez nem egy konkrét weboldal, ez csak egy API (backend), ahova a kliens (frontend) tud kéréseket küldeni. Átlagos FE / BE kommunikáció:

A klienst letölti a felhasználó (html, css, js), ahol ki tud tölteni egy bejelentkezési formot. Kitölti, majd az adatokat a kliens elküldi a szervernek egy authentikációs endpointra. Például.: localhost:8080/api/auth

Amit küld, az egy JSON.

Példa.:
Kód:
{
   "email":"test@test.test",
   "password":"supersecret"
}


A BE ezt a kérést megkapja, leellenőrzi DB-ben, hogy létezik-e ilyen felhasználó, majd visszaküld egy response-t, ami megint csak egy JSON. Ha sikertelen, akkor beállítja a státuszkódot 401 Unauthorized-re, ha sikeres, akkor leküld egy tokent.

Példa.:
Kód:
{
   "jwtToken":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6IndlYiIsImV4cCI6MTUwODkzNTYzOCwiaWF0IjoxNTA4MzMwODM4fQ.uEgEDyhbK4NisvAXEJHznjKgv2iV9b-bb69P2-rZuYrag-wuqKG3sckWJy4tfhaIKQb6_nudzufIM-ffBkTHEA"
}


A kliens ezt elmenti localstorage-ben, vagy cookieban.

Példa.:
Kód:
localStorage.setItem("token", idearesponse.token);


Ezután a felhasználót a kliens belépteti a belső oldalra a felhasználót. Amennyiben olyan helyre kattint, ahol adat kell (pl termékek megjelenítése), akkor a kliens elküld egy GET kérést, pl a localhost:8080/api/products endpointra. Fontos, hogy itt már a kérés fejlécében benne kell lennie a lementett tokennek, mert a backenden ugye ez is védve van. Ha minden okés, akkor jönnek a termékek megint csak JSON-ben.

Példa.:
Kód:
[
   {
      "id":1,
      "name":"paprika",
      "price":100
   },
   {
      "id":2,
      "name":"paradicsom",
      "price":150
   }
]


És így tovább. Ha bármi kérdésed van, keress. :) Egyébként ajánlom, hogy mondjuk keress rá youtube-on a RESTful backend kifejezésre, biztos van pár ilyen tutorial / guide ami előadja a lényegét. PHP-ban a későbbiekben nem biztos, hogy tudok segíteni, mert egyáltalán nincs PHP-s projektem (hálistennek), akár a Java-t is kipróbálhatnád, elég okos dolgokat meg lehet benne csinálni. :) Abban még bőven tudok is segíteni, annyi a hátránya, hogy azt apache szerverre nem tudod deployolni, ahhoz tomcat / jboss kell, ami a szolgálatóknál nehezen fellelhető, de localhoston tesztelgetni / fejlesztgetni nagyon tökéletes.


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 4 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 4 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole