hlmod.hu
https://hlmod.hu/

Elérési útvonal blokkolása
https://hlmod.hu/viewtopic.php?f=114&t=29001
Oldal: 1 / 1

Szerző:  JohanCorn [ 2018.05.22. 22:40 ]
Hozzászólás témája:  Elérési útvonal blokkolása

Üdv!

Megint foglalkoztam kicsit weboldal fejlesztéssel és most jquery-t készítettem ami adatokat küld egy php fájlnak ami ugye ad vissza értéket, stb. Na most azt a php fájlt bárki elérheti. Ugye POST kéréseket kezel, de nem tudom, hogy ezzel kell-e, vagy ajánlott-e a külsős elérést blokkolni, hogy csak a webszerver használhassa. Ha igen, akkor mit ajánlanak a szakértők?

Köszönöm!

Szerző:  SidLuke [ 2018.05.22. 22:47 ]
Hozzászólás témája:  Re: Elérési útvonal blokkolása

Szia, ha minden az index.php-n megy át, akkor mindent amit include-olsz attól számold...

Tehát, ha az index.php-ben van egy include "content/tartalom.php"
és a tartalomban egy include "includes/db.php" és a mappaszerkezet a következő:

/
|-index.php
|-content
||- tartalom.php
|- includes
||-db.php

akkor működni fog..

Ha a tartalom.php-ban include "../includes/db.php" van, akkor hibát kapsz.

Nálam ez működöt.

Remélem érthető és a kérdésedre válaszoltam...

Szerző:  JohanCorn [ 2018.05.23. 11:11 ]
Hozzászólás témája:  Re: Elérési útvonal blokkolása

Nem, nem ez volt amit kértem.

Az érdekel, hogy egy olyan PHP fájlt, amit csak a jquery használ érdemes, kell-e blokkolni a külsős felhasználóktól, ha POST kéréseket kezel. Így direktben ha hivatkozok rá csak egy üres fehér lap jelenik meg nem, de jó ez így, vagy valamit tegyek még?

Szerző:  SidLuke [ 2018.05.23. 11:26 ]
Hozzászólás témája:  Re: Elérési útvonal blokkolása

Nálam ez működöt.

De megpróbálhatod így is.

  1. $.ajax({
  2.       url: "ajax.php",
  3.       type: "POST",
  4.       data : { name: "Tom", phone: "01234123456","action" : "save_data" },
  5.       dataType: "text",
  6.       success: function(data){
  7.           $('#response').html(data);
  8.       },
  9.       error: function(XMLHttpRequest, textStatus, errorThrown) {
  10.           alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
  11.       },
  12.       async: false
  13.   });

Szerző:  DeteCT0R [ 2018.05.23. 13:01 ]
Hozzászólás témája:  Re: Elérési útvonal blokkolása

Azt hogy erdemese blokkolni nemtudom viszont ha a webszerveren kivul nem hasznalja mas a php fajlt akkor tudod blokkolni.


Kód:
<?php
if ( ! ($_SERVER['HTTP_HOST'] == 'localhost' || $_SERVER['REMOTE_ADDR'] == '127.0.0.1') ) {
    header("HTTP/1.1 404 Not Found");   
    exit();
}


php script elejere szurd be.

Szerző:  Silent [ 2018.05.24. 09:07 ]
Hozzászólás témája:  Re: Elérési útvonal blokkolása

A jquery nem a webszerveren fut, ha beertem melóhelyre kifejtem, hogy mi micsoda, mert látom van egy kisebb homály :)

Szerző:  JohanCorn [ 2018.05.24. 09:20 ]
Hozzászólás témája:  Re: Elérési útvonal blokkolása

Silent írta:
A jquery nem a webszerveren fut, ha beertem melóhelyre kifejtem, hogy mi micsoda, mert látom van egy kisebb homály :)


Jajaja. Erre nem is gondoltam. Akkor valszeg, ha blokkolom, akkor el sem fog indulni. Türelmesen várok rád és köszönöm.

Szerző:  Silent [ 2018.05.24. 13:03 ]
Hozzászólás témája:  Re: Elérési útvonal blokkolása

Megfeledkeztem erről, de most van pár percem.

Tehát, a webes alkalmazások (igen, alkalmazások) mindenképp minimum két részből épülnek fel. Van egy static content, amit a kliens letölt az apache (lehet más is, értsd..) szerverről. Ilyen static content a HTML, a CSS, a javascript például. A másik része, ami a szerveren futó kód, esetedben a PHP. A jQuery is static content lesz, tehát a kliens (pl. Ferike) letölti a saját számítógépére (nyilván nem explicit a download gombbal..) és az a böngészőben fog futni. Innenstől kezdve, nem a webszerver fogja küldeni a requestet a PHP fájlodra, hanem egy remote cím, amit te sosem fogsz tudni predictelni, mivel ez attól függ, hogy épp ki használja. Ergó, ha same origint vársz el a PHP oldalon, akkor azt csak is kizárólag a webszervered éri el, míg Pistikének jön a HTTP error response.

Kérdésedre válaszolva:

Igen, adj security layert a szerver oldali endpointokra. Ez egy must have dolog, rohadt veszélyes ha az endpointjaidat eléri bárki, aki meg tud nyitni egy javascript fájlt és megnézze, hogy hova mennek a kérések jqueryből.

Megoldások sorozata:

1.) Laravel framework -> Tymon által készített JWT package
2.) JWT kézzel implementálása
3.) Ha nincs kedved JWT-t implementálni (procedurális plain PHP-ban nekem sem lenne kedvem, elég BS), akkor egyszerűsítve meg tudod azt tenni, hogy amikor authentikálod a felhasználót (belépteted), a HTTP válasznál leküldöd a felhasználónév jelszó kombóját base64-ben tárolva, majd azt kliens oldalon javascripttel lemented Local Storageba (imp.: localStorage.setItem('token', 'a-base64elt-string-ami-lejött-szerverről') ). Ha ez megvan, minden secured kérésnél elküldöd headerbe ezt a stringet ( localStorage.getItem('token') ) és a PHP fájlban kiszeded ezt, dekódolod és megnézed hogy jó-e. A JWT is nagyjából ezt csinálja, csak menőbben. :) Érdemes amúgy az 'Authorization' headerbe belepakolni ezt a motyót.

Nyilván ha olyan kérésekről van szó, amik nem belépettséghez kötöttek, akkor nem kell semmi, hiszen azok nem érzékeny adatok.

Ha kérdés van írj, ha nem válaszolok egy-két napon belül, írj egy PM-et is, azt picivel sűrűbben nézem. :)


Edit.:

Ha tényleg érdekel a webfejlesztés és nem akarsz kókányolni, akkor mindenképp hagyd abba azt amit most csinálsz, mert nem előre vezető egyáltalán. JQuery egy olyan dolog, amit már csak régi robosztus alkalmazásoknál használunk amit sok idő lenne újraírni, valamint a procedurális plain, kézzel írt PHP is eléggé divatját múlt. Ami nálad már fejlődés jelére utal, hogy nem a HTML kódba ágyazod be a PHP soraidat, ezért már respect jár.

Amit csinálj minden (igen MINDEN) helyett:

Ismerkedj meg a TypeScripttel (kb javascript, csak típusos és atommenő), ha esetleg túlságosan tömény először, akkor nézd meg az új EcmaScript 6-ot (ezt fogják használni a legújabb JS motorok), itt már vannak érdekes dolgok amik picit már a típusosság irányába eveznek, valamint megjelenik (végre) az arrow function, ami talán a Java-s lambdának felel meg. Ha ez megvan és így már érthető a TypeScript, akkor nézz fel a www.angular.io weboldalra és ismerd ki az angular 6-ot (5 is jó, én még nem nézegettem a 6-ot), csinálj magadnak kis (szerver nélküli) alkalmazásokat, pl egy todolistet vagy bármit. Ha úgy érzed, hogy igen, ez menő, akkor jöhet a szerver. Ha PHP-t akarsz használni minden áron, akkor Laravel. Nagyon széleskörű a supportja, nagyon jó és nagyon menő. Pár perc alatt felépítesz egy olyan API-t a weboldaladhoz, amivel tudsz regisztrálni / belépni biztonságosan (JWT authentikáció), usert létrehozni, lekérni, módosítani, törölni stb. Tényleg pár perc alatt ha rutinos vagy.

Az endpointjaid resource based pretty url-ek lesznek. Pl.:

Belépés: POST: www.yourdomain.com/server/api/auth

Felhasználó létrehozása: POST: www.yourdomain.com/server/api/users/
Felhasználók lekérése: GET: www.yourdomain.com/server/api/users/
Egyedi felhasználó lekérése: GET: www.yourdomain.com/server/api/users/19
Felhasználó módosítása: PUT: www.yourdomain.com/server/api/users
Felhasználó törlése: DELETE: www.yourdomain.com/server/api/users/19

Egy szóval, nem a www.yourdomain.com/server/create_user.php-t kell hívogatnod mint középsuliba, hanem egy normális resource based REST url-t kell hívni, amit a profik is használnak.

Edit2:

Ha pedig nem minden áron PHP, akkor ajánlom a Java-t. Én java fejlesztőként dolgozok prioritás ügyileg, nem mindig leányálom ugyan, de könnyen megszokható, megszerethető, nagyon sok dolgot egyszerű benne megvalósítani, valamint erősen típusos a nyelv, ami segít abban, hogy ne tévedj el a sok hasonló nevű változód között például. :)

Én JavaEE-t használok, de neked talán egyszerűbb a spring bootot használni, mert ott nem kell külső deploy tool, egy kattintással elindítható a web service. www.spring.io-n össze tudod kattintgatni magadnak, hogy miket akarsz a projektben használni (ebben tudok segíteni h mi micsoda) és utána legenerál neked egy teljes spring projektet.

Java hátrányai: Nem fogod tudni egy sima apache szerverre fellőni, kell hozzá egy deploy tool (glasshish, jboss, tomcat, wildfly stb). Nehezebb mint a PHP. Kód változtatás esetén újra kell fordítanod az alkalmazást, valamint újra kell deployolni, nem elég lementeni a java fájlt mint a php fájlt (bár állítólag már vannak ilyen hot-replace cuccok, de én ezekben nem vallásos emberként nem hiszek). :)

Szóval ja, írj ha van valami :)

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/