Autor Zpráva
fuckin
Profil
Pěkné odpoledne,

Vytvářím registrací uživatelů a jako ukládací médium jsem si zvolil soubory.

Mám 2 nápady jak to provést:

1. Všechny uživatele ukládat do jednoho souboru, přičemž při změně různých políček to budu muset celé překopat (a to díky již předem dané struktuře, které se musím striktně držet). To je dle mého názoru špatná cesta, proto se přikláním k možnosti číslo 2.

2. 1 uživatel = 1 soubor. Přeci jenom jedná se o sekvenční čtení. Proto u mě vyhrála tato možnost.


Dále mám otázečku jak nejlépe zabezpečit tyto soubory?
Mé nápady:
- Název souboru bude mět hodnotu base64_encode(JMENO_UZIVATELE).(libovolná přípona (krom txt aby se to netvářilo, že na první pohled je to MIME TYPE text))
- v souboru budou jednotlivé data o uživateli zakódována nějakou zpětnou šifrou (heslo v sha1) a oddělena středníkem pro jednoduché čtení přes explode()
- v adresáři s těmito soubory bude .htaccess s deny from all

Je můj přístup k tomuto projektu správný? Prosím neříkejte mně abych využil databázi, děkuji.

A ještě jestli někdo má zkušenosti s obousměrnýma šiframa může mně nějakou poradit. Díky moc.
panther
Profil
fuckin:
a jako ukládací médium jsem si zvolil soubory.
já bych viděl chybu už tady. Proč ne databáze?
Radek9
Profil
fuckin:
2. 1 uživatel = 1 soubor.
Ano.

Mé nápady:
- Šifrování atd. je zbytečnost.
- Heslo samoszřejmě hashovat.
- Odděloval bych něčím jiným než středníkem.
- Příponu doporučuji php a data ukládat jako php poznámku. Například:
<?php /*<+++++>něco<+++++>další<+++++>atd.<+++++>*/ ?>


Je můj přístup k tomuto projektu správný?
Ano.

Prosím neříkejte mně abych využil databázi
Nebudu, protože taky rád (když to jde) použiji soubory.

panther:
já bych viděl chybu už tady. Proč ne databáze?
A proč ano?
fuckin
Profil
Cetl sis to cele? Jasne sem poprosil aby jste si tuto pripominku odpustili.

Lepe se to prodava, diky jednoduchosti instalace. Je to proste pevne dane ,nereste to.
Akacko
Profil
Radek9:
Rychlejsi a jednodussi zpracovani? Lepsi zabezpeceni? Jednodussi zalohovani?
fuckin
Profil
Radek9:
Diky za professionalni pristup. Muzes me jeste vysvetlit jak ty data z toho php souboru mam efektivne cist kdyz to bude v komentarich?
Joker
Profil
fuckin:
Prosím neříkejte mně abych využil databázi, děkuji.
Je nějaký závažný důvod nepoužít databázi?
Pokud ano, stálo za to ho tam uvést.

panther:
Mé nápady:
- Název souboru bude mět hodnotu base64_encode(JMENO_UZIVATELE).(libovolná přípona (krom txt aby se to netvářilo, že na první pohled je to MIME TYPE text))
K čemu to bude dobré?

- v souboru budou jednotlivé data o uživateli zakódována nějakou zpětnou šifrou (heslo v sha1) a oddělena středníkem pro jednoduché čtení přes explode()
Tak alespoň si ta data nebude moci přečíst každý kdo se dostane na FTP, pak ale záleží na tom, jak by se dešifrovala.

- v adresáři s těmito soubory bude .htaccess s deny from all
To je samozřejmě správně.
panther
Profil
fuckin:
Cetl sis to cele?
je pravda, že toto jsem přehlédl, až do konce jsem nedočetl.

Nicméně, na tomtéž řádku na začátku se ptáš: „Je můj přístup k tomuto projektu správný?“.
Co ti na to kdo má odpovědět?

Řeknu-li „ANO“, nebude to pravda.
Řeknu-li „NE“, to nechceš slyšet.
Joker
Profil
Akacko:
Rychlejsi a jednodussi zpracovani? Lepsi zabezpeceni? Jednodussi zalohovani?
A to jsou výhody čeho?

- Rychlejší zpracování -> soubory
- Jednodušší zpracování -> databáze
- Lepší zabezpečení -> spíše databáze
- Jednodušší zálohování -> těžko říct
panther
Profil
Joker:
odpověděl bych ti, ale nechci se dostat mimo :-)

Stručně: přijde mi zbytečné mít kopici souborů (ale záleží na počtu uživatelů). S DB se lépe pracuje.
Navíc, jak jsem psal [#8], přehlédl jsem fuckinovu poznámku na konci. Nebyl záměr mu napsat to, co nechtěl.
Joker
Profil
panther:
odpověděl bych ti
Netřeba, kliknul jsem na špatné Citovat ;-) Myslím, že nejsme ve sporu :-)
johnl
Profil
fuckin:
Muzes me jeste vysvetlit jak ty data z toho php souboru mam efektivne cist kdyz to bude v komentarich?
Pomocí explode..

soubor.php
<?php /*|něco|další|atd|*/ ?>

index.php
$udaj = explode("|", file_get_contents("soubor.php"));
echo "$udaj[0]"; //Bude <?php /*
echo "$udaj[1]"; //Bude něco
echo "$udaj[2]"; //Bude další

...
Joker
Profil
johnl:
No to svislítko nebyl zrovna dobrý příklad. Řádek:
if(($neco == "a") || ($neco == "b") || ($neco == "c")){ 

v tom nadělá slušný binec.

Dodatek: Myšleno pokud tam bude i nějaký PHP kód

Jinak tedy jestli to má být ochrana před zobrazením souboru z prohlížeče, tak lepší je .htaccess a deny from all.
johnl
Profil
To „svislítko“ bylo jen jako příklad použít může třeba to „<+++++>
Nox
Profil
Joker:
Má jít o soubor daty uživatele/ů, takže nemyslím, že by tam měl php kód co dělat

Radek9:
Šifrování atd. je zbytečnost.
- až tak jednoznačné mi to nepřijde, bude zvýšená bezpečnost, obvzlášť kdyby server (hosting) nepodporoval htaccess

Příponu doporučuji php a data ukládat jako php poznámku. Například:
- proč? Nevidím jedinou výhodu, jedině komplikace, je to soubor s daty, ne php kódem
- třeba johnl nemá vůbec vůběc ošetřené <?php ?>, které tam podle mě bude, jelikož to načítáš přes file funkci, tudíž se to nebude parsovat před zpřístupněním

A proč ano?
Nevím kde začít... soubory jsou poměrně rigidní systém, databáze jsou celý systém specializovaný právě na takové úkony,
s nástroji a jazykem. Pokud nebude zamýšlená aplikace úplně jednoduchá, tak vypsat třeba tímto stylem přihlášené uživatele (v mysql jednoduchá věc)
bude podle mě silně krkolomné. Relace mezi tabulkami a klíče, triggery a milion dalších věcí

fuckin:
Při změně různých políček budeš muset i ve variantě 2 všechno překopávat, navíc přes víc souborů, tzn. o něco horší. Každopádně myslím že nic, co by nevyřešil jeden regulár...
Řekl bych že varianta víc souborů bude asi o trochu rychlejší, jelikož OS bude mít asi nalezení cesty k souboru rychlejší než sekvenční procházení souboru
Pokud ovšem nepoužiješ memcached atp. ... to by pak varianta 1 byla podle mě rychlejší...

Vůbec si nejsem jistý, zda by byla databáze pomalejší a spíš bych se přimlouval za ni, výhodu vidím snad jen v tom, že to pojede i na hostingu bez databáze...
Shulík
Profil
Nox:
to pojede i na hostingu bez databáze...
To by šlo vyřešit přes SQLite, PHP5 by pro ni mělo, tuším, mít už nativní podporu. Ale tehdy odpoadá plno výhod databáze, nevím, nakolik je SQLite schopna používat porovázanost tabulek, natož třeba triggery.
Kacko
Profil
fuckin:
Ukladej to v XML, zadne feature typu jine pripony souboru tam nedavej, to je k nicemu. Hashuj hesla. Klidne to sifruj, ale ten kdo se ti tam dostane to stejne prolomi.
fuckin
Profil
Kacko:
Tak jasne ze tu sifru kazdy prolomi, to bude jen od toho aby nejaky BFU to neprecetl. Nato bude stacit i base64, akorat nevim jak s diakritikou, dela to bordel. lze to nejak naucit i diakritiku?

Xml vidim jako zbytecne, to je tak dobre na export.
Kacko
Profil
fuckin:
V cem je XML zbytecne?

ad. diakritika - nemyslim, ze by base64 melo problem s diakritikou v UTF8, ale mozna se pletu.
fuckin
Profil
Kacko:
Taky sem si to myslel. Je to zahranicni hosting, mozna bude problem v tom, ikdyz pochybuju, pohraju si s php.ini, kdyztak sem napisu.

Xml vidim jako az moc velky kalibr na neco tak jednoducheho.
Me vyhovuje urcita posloupnost znaku ktera je predem dana. Musel bych vyuzit externich class nebo nastudovat interni fce pro praci s xml, obavam se ze ale podpora nebude vsude stoprocentni. Proto volim jistotu.

Az bude php6 tak prejdu na binarni soubory :)
Joker
Profil
Nox:
Má jít o soubor daty uživatele/ů, takže nemyslím, že by tam měl php kód co dělat
Já to nejdřív pochopil jinak, tak jsem potom dopsal ten dodatek.
Každopádně mi to nepřipadá jako moc dobrý způsob uložení dat. Nevidím v tom žádné výhody, naopak v tom vidím dvě nevýhody:
- Data jsou obalená do jedné vrstvy navíc, víc práce při zpracování
- Vytváří to nová bezpečnostní rizika. Když se mi povede do souboru dostat řetězec */ a pak ho otevřít v prohlížeči, vyhodí to nejspíš nějaké chyby. Když se mi tam povede dostat */?>, vypíší se mi uložená data za místem, kam jsem řetězec dostal. Když se mi podaří tam dostat */ PHP kód /*, vykoná se ten vložený PHP kód.

fuckin:
Xml vidim jako zbytecne, to je tak dobre na export.
Hm.
Databáze ne, XML ne, s odůvodněním "prostě to tak je".
To je zadané, že pro ukládání dat se musí používat formát se kterým se blbě pracuje a půjde pokud možno co nejhůř udržovat?
imploder
Profil
[(demag)(ideol)]ogická "osvěta":
Ukládat data uživatelů do souborů je správné, protože to odpovídá unixové filozofii "všechno je soubor".

Každý se tak může vrtat i v uživatelích textovým editorem.
Jaký je tady vlastně důvod použít textové soubory - je to tento, nebo nějaký jiný? Bezpečnější to oproti DB asi nebude, jenom míň náročné (není potřeba DB, DB server si odpočine).
fakeit
Profil *
imploder:
a co tak třeba větvení databáze? :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: