Kezdőoldal » Számítástechnika » Weblapkészítés » TXT alapú fájlt php-s adatbázi...

TXT alapú fájlt php-s adatbázisként használva, letöltés esetén ha olvashatatlanná akarom tenni, mit tudok tenni?

Figyelt kérdés

Magyarán, ha php használja a fájl, írja olvassa, de sima txt alapú (nem csv meg ilyenek) akkor ugye letöltés esetén egy jegyzettömb simán megnyitva és olvashatóvá válik a tartalma. Mit tudok tenni, hogy ezt a fájlt csak a php kód tudja használni, olvasni és írni?


Igazából csak elméleti kérdés, kíváncsiság.


Vannak olyan egyedi fájlkiterjesztések, hogy kb. semmi nem olvassa (pl. pc játékfájlok) csak a készítő saját programja.


De az most hogy valami random fájlkiterjesztést használok az égvilágon semmit nem jelent. Ha a fájl txt alapú, akkor meg lehet nyitni és kész.


Ha elnevezem pdf-re, akkor nem fogja a header hiány miatt megnyitni a pdf olvasó, de a notepad még mindig XD


2022. márc. 25. 11:52
 1/10 anonim ***** válasza:
100%

először is hülyeség ezt ilyen módon használni

de ha mégis olyat szeretnél, hogy egy fájl elérhetetlen legyen kívülről, akkor ne a www vagy public mappába rakd, hanem olyan mappába ahol csak a PHP éri el és nem letölthető!

2022. márc. 25. 11:58
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
100%

Alapvetően a fájlok védelmét úgy szokták megoldani, hogy csak az kerül bele a public mappába (webszerveren) aminek valóban ott a helye, tehát azt szeretnénk, hogy kívülről közvetlenül elérjék. Minden egyéb esetben rakd olyan helyre amit nem érnek el kívülről.


Ezen felül van még lehetőség a közvetlen fájlelérést webszerver beállítások módosításával is befolyásolni (kérdés persze mit használsz: apache? nginx? - csak hogy a legelterjedtebbeket említsem).


De a leginkább faék megoldás (nem szép, de hatékony), hogy szimplán php kiterjesztést adsz neki és a fájl első sorába beteszed ezt:

<?php die();

majd a fájlt csak a második sortól kezded el feldolgozni.

Így ha meghívod böngészőn keresztül, akkor a webszerver átadja a php interpreternek és az első sornál nem jut tovább, tehát egy üres fájlt lát az illető. Letölteni sem tudja a tartalmát.

Te viszont backenden el tudod érni és ki tudsz velőle olvasni bármit.


Utóbbi viszont a kapa-kasza módszer, szóval inkább csak érdekességnek említettem. Javaslom használd az első két opció egyikét ilyen esetben.

2022. márc. 25. 12:03
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:
66%

#2 javítom magam. visszaolvasva lemaradt a záró tag:

<?php die(); ?>

alapvetően soha nem rakjuk ki, (ennek is megvan az oka) itt viszont kell, különben 500-as hibát fog dobni


persze ez mit sem változtat azon, hogy ne ezt a megoldást használd! :) (csak nem akartam hogy hülyeség maradjon itt)


Tehát rakd a public-on kívülre és kész.

2022. márc. 25. 12:11
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:

"ennek is megvan az oka"

Azt az okot pedig lustaságnak hívják.

Aztán csodálkozunk, ha valami egy verziófrissítés után nem megy.

2022. márc. 25. 12:54
Hasznos számodra ez a válasz?
 5/10 Pelenkásfiú ***** válasza:

#4 nem feltétlenül...

Ha pl. a ?> után marad szóköz vagy \n, az gondot okozhat.

Csak hogy a leggyakoribb esetet említsem: header előtt output.

2022. márc. 25. 13:18
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:

Vagy ne rakd a szövegalapú adatbázist a webszerver által kiszolgált könyvtárba, vagy korlátozd az elérhetőségét - például Apache esetén a .htaccess-ben <Files> és ordr direktívák:

* [link]

* [link]

használatával; illetve PHP-ben az open_basedir konfigurációs paraméterrel:

* [link]

tudod szabályozni, hogy maga a PHP mihez férjen hozzá.

2022. márc. 25. 13:32
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

Hülyének fogok tűnni tényleg, de ha nem a webszerveren van a fájl, akkor hol...? Tudtommal minden content ott van és onnan dolgozik a rendszer. Ha innen-onnan behívom, az se biztos hogy jó?


Igen, .htaccess fájllal konkrét mappákat, fájlokat levédhetek, ezt természetesen ismerem.


Ez a php die() szimpatikus, mivel nem egy nagy volumenű projekthez kellene... Együtt alkalmazva előbbivel még hatékonyabb.


Tudom hogy a flat file nem jó megoldás de ha nincs kedvem mysql-t használni (vagy esetleg nincs mód rá), akkor kézenfekvő array-okkal bajlódni inkább. :)


Saját célra lesz amúgy, nem másnak kellene.

2022. márc. 25. 13:46
 8/10 anonim ***** válasza:
#7: Ha saját magad hosztolod a webszervert, akkor te határozhatod meg, hogy a webszerver melyik könyvtárt használja - azon felül a PHP-nak meghatározhatod, hogy milyen könyvtárt érhet el a szerver fájlrendszerén belül - akár a webszerver által használt könyvtár egy, .htaccess által tiltott hozzáférésű alkönyvtárát; vagy egy, a webszerver által használt könyvtáron kívüli másik mappát is.
2022. márc. 25. 14:01
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

A webszerverre rakod, de a docrooton kívülre.

Linux szerver esetén még működhet: a fájlnév kezdődjön egy ponttal: ".valami.txt". Linuxon ez rejtett fájlnak számít, és nem szolgálja ki a webszerver

2022. márc. 25. 15:04
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:

#4

"Azt az okot pedig lustaságnak hívják."


Nem. Több oka is van, pl az #5-ös által említett header probléma, de elég megnézni a kódolási ajánlásokat. Vagy kb bármelyik népszerű keretrendszert...

Előbb olvass utána mielőtt butaságokat próbálsz megtanítani másoknak.


[link]


[link]

2022. márc. 25. 15:54
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!