« 1 2 »
Autor Zpráva
Tomáš123
Profil
Ahoj, podarilo sa mi vytvoriť jednoduchú ničím nezabezpečenú registráciu a prihlásenie užívateľa. Trochu som si osvojil prácu so súbormi a chcel by som vytvoriť tak dobre zabezpečené prihlásenie, aby sa do pre mňa vyrobeného prostredia nikto nezvaný nedostal. Úplne by mi mi stačilo niečo, ako prihlásenie do sandboxu (ak by nebolo omnoho iné normálne prihlásenie cez registračný formulár, bral by som aj to).

Mohli by ste ma teda postrčiť správnym smerom v otázke, ako vytvoriť slušne zabezpečené prihlásenie. Za rady budem vďačný.
Taps
Profil
Tomáš123:
základem by mohlo být ošetření proti webovým útokům
Marschmallow
Profil
Tomáš123:
Pomocí čeho? PHP, .htaccess? Návod na .htaccess máš třeba zde. Návod pomocí PHP a MySQL máš zase zde. Doporučuji druhou možnost.
Tomáš123
Profil
Pomocou čoho má vyriešené prihlásenie do sandboxu táto diskusia?
Taps
Profil
Tomáš123:
pomocí .htaccess,viz[#3] Marschmallow
Kubo2
Profil
Marschmallow:
...alebo oba spôsoby skombinovať, jemne povedané.
Tomáš123
Profil
Do adresára, kde chcem obmedziť prístup, som pridal súbor .htaccess. Jeho obsah je nasledovný:
AuthUserFile C:/Program Files/EasyPHP-DevServer-14.1VC9/data/localweb/administration/.htpasswd
AuthType Basic
AuthName "Tajný obsah"
require valid-user

Stránka však pri každom načítaní hlási chybu serveru s číslom 500. Ako takémuto správaniu predísť?

Chcel by som sa ešte opýtať, ako pridať prihlasovacie údaje do súboru .htpasswd? Vo vyššie odkázaných materiáloch ([#3]) sa uvádza iba „Ako približne môže vyzerať obsah“. O pridávaní dvojíc meno, heslo sa tam nehovorí nič.
Marschmallow
Profil
Tomáš123:
1.) Proč máš uvedenou absolutní cestu k souboru .htpasswd? Změň ji na relativní.
2.) Každý vygenerovaný řádek na nový řádek. Každý řádek je ve tvaru jmeno:zakodovaneheslo. To jméno a heslo si sám vygeneruješ pomocí nějakého online .htpasswd generátoru - viz. [#10].
Tomáš123
Profil
Marschmallow:
Změň ji na relativní.
Tam, kde si ma odkázal je zvýraznené, že mám použiť absolútnu cestu. Vďaka relatívnej ceste sa zobrazí dialógové okno.

si sám vygeneruješ na tom odkazu
Myslíš ten, ktorý nefunguje? Nemôžem si meno a heslo vytvoriť sám?
Marschmallow
Profil
Tomáš123:
Je problém zadat do Googlu frázi .htpasswd generator? Já používám tento.
Zadáš tam jméno a heslo, kterým se chceš přihlašovat, ten generátor Ti vygeneruje řádek s tím jménem a zakódovaným heslem. Ten vložíš do souboru .htpasswd.
Pravidlo: co nový uživatel, to nový řádek.
Tomáš123
Profil
Marschmallow:
Skúsil som si tam dosadiť riadok vygenerovaný tvojim obľúbeným generátorom. Dialógové okno sa nenačíta nikdy. Stále to vyhodí frázu: „Nastala vnitřní chyba a server nebyl schopen dokončit Váš požadavek. Buď je server přetížen, nebo došlo k chybě v CGI skriptu.

Skúsil som vymazať obsah súboru, vymazať súbor, znovu vytvoriť prázdny súbor, pridať tam starý obsah a medzi žiadnym zo stavov sa mi okno neukázalo.
Fisir
Profil
Reaguji na Marschmallowa:
Návod pomocí PHP a MySQL máš zase zde.
1) Dnes se již MD5 k hashování hesel nepoužívá, doporučuji raději password_hash().
2) Používáš zastaralé rozšíření mysql_*, doporučuji raději MySQLi, nebo PDO (případně nějakou nadstavbu).
3) V registračním formuláři neošetřuješ možnosti, kdy jako nick nebo email zadám něco ve stylu " onclick="alert('XXS!');".
4) Přihlašovací skript skončí při úspěšném přihlášení chybou, protože nejdřív odešleš meta tag pro nastavení kódování, ale až poté inicializuješ session a odesíláš přesměrovávací hlavičku.
5) U přihlašovacího skriptu bys nemusel používat funkci stripslashes(), kdybys použil původní hodnotu (tj. $_POST['nick']).

Reaguji na Tomáše123:
Nevkládá tvůj editor do souborů .htaccess a .htpasswd BOM?
Tomáš123
Profil
Fisir:
Nevkládá tvůj editor do souborů .htaccess a .htpasswd BOM?
Ako sa to dá zistiť? Poprípade vieš kde sa to dá nastaviť? Používam Notepad++.

Ešte raz som súbory vymazal a pridal ich tam pomocou obyčajného poznámkového bloku. Ten by BOM vkladať nemal, však. Situácia sa ale nezmenila.
Davex
Profil
Tomáš123:
Příčinu chyby si obvykle přečteš v chybovém logu Apache.
Tomáš123
Profil
Davex:
Ak som hľadal správne, v súboroch Log Files -> Apache error sa pri spomínanej chybe vygeneruje táto poznámka:
[Sat Jan 03 11:08:33.150151 2015] [authn_file:error] [pid 6132:tid 1004] (OS 3)Systém nemôže nájsť zadanú cestu. : [client 127.0.0.1:49260] AH01620: Could not open password file: C:/Program Files/EasyPHP-DevServer-14.1VC9/binaries/apache/administration/.htpasswd
Nerozumiem, prečo nemôže Apache nájsť cestu. Adresár i súbor existuje.
Taps
Profil
Tomáš123:
Cesta kterou máš v AuthUserFile se liší od cesty, kterou vyhazuje Apache v error logu
C:/Program Files/EasyPHP-DevServer-14.1VC9/data/localweb/administration/.htpasswd
C:/Program Files/EasyPHP-DevServer-14.1VC9/binaries/apache/administration/.htpasswd 
Davex
Profil
Tomáš123:
Pravděpodobně máš uvedenu relativní cestu k souboru .htpasswd, která se odvozuje od „ServerRoot. Pokud ho máš jinde, musí se uvést celá cesta, a pokud máš v cestě mezeru, tak se musí celá uzavřít do uvozovek.
Marschmallow
Profil
Tomáš123:
Ulož si soubor .htpasswd do stejné složky jako .htaccess a do cesty napiš pouze .htpasswd. Bez lomítka na začátku, prostě jen ten název souboru. Pak by neměly vzniknout žádné komplikace.
Tomáš123
Profil
Taps:
Dobrý postreh!

Davex:
Áno, uviedol som relatívnu cestu na základe príspevku [#8], vyskúšal so ju zmeniť na absolútnu, a medzeru uzavrel do úvodzoviek:
AuthUserFile "C:/Program\" \"Files/EasyPHP-DevServer-14.1VC9/data/localweb/.htpasswd"

Iné varianty, ktoré som tiež vyskúšal:
AuthUserFile C:/Program" "Files/EasyPHP-DevServer-14.1VC9/data/localweb/.htpasswd
AuthUserFile C:/Program%20Files/EasyPHP-DevServer-14.1VC9/data/localweb/.htpasswd

Marschmallow:
Zmenil som aj umiestnenie súboru, stále sa však situácia nemení. Výpis z Log Files:
[Sat Jan 03 13:40:37.000924 2015] [core:alert] [pid 5168:tid 1004] [client 127.0.0.1:49955] C:/Program Files/EasyPHP-DevServer-14.1VC9/data/localweb/projects/My website/version 3.4/.htaccess: Invalid file path C:/Program" "Files/EasyPHP-DevServer-14.1VC9/data/localweb/.htpasswd

I keď som umiestnil súbor priamo ku súboru .htaccess a cestu ku súbor .htpasswd zapísal v podobe .htpasswd, chyba sa nemení. Ako tak pozerám do Log Files, systém si pri tejto variante mení cestu na C:/Program Files/EasyPHP-DevServer-14.1VC9/binaries/apache/.htpasswd

Mohli by ste mi prosím konkrétne poradiť, ako zapísať medzeru?
Fisir
Profil
Reaguji na Tomáše123:
Ehm, do uvozovek se nemá uzavřít mezera, ale celá cesta, tj. "C:/Program Files/EasyPHP-DevServer-14.1VC9/data/localweb/.htpasswd".
Tomáš123
Profil
Fisir:
Aha, nepochopil som Davexa. Po úprave cesty sa zobrazí autentifikačný formulár. Vhodné heslo a som dnu.

Ďakujem všetkým za pomoc.

Mám ešte jednu otázku povedľa: Je nejaký spôsob, ako nahradiť stránku, ktorá sa generuje pri nesprávnych údajoch?
Davex
Profil
Tomáš123:
Je nejaký spôsob, ako nahradiť stránku, ktorá sa generuje pri nesprávnych údajoch?
Ano.

ErrorDocument 401 /pristup-odmitnut.html
Tomáš123
Profil
Davex:
Ospravedlňujem sa, ale neviem súbor nájsť. Mohol by si prosím upresniť jeho pozíciu? Všade sa jedná o zvýraznený názov, alebo si to iba tak trepol?

Dodatok: Je zvyčajne možnosť modifikovať tento súbor aj na hostingoch? Ak nie, rieši sa to pomocou tvrdého presmerovania prostredníctvom header('Location: www.nieco.sk/subor'); na základe podmienkovej logiky?
Davex
Profil
Byl to jen příklad. Ten soubor si můžeš vyrobit s libovolným jménem. Může to být i PHP skript nebo něco jiného.
Tomáš123
Profil
Davex [#22]:
Uvedený riadok som vložil do .htaccess a vytvoril súbor. Po zadaní nesprávnych údajov, alebo zrušení autentifikácie sa však objavil Error 401. Prepísal som teda číslo chyby v zápise na 401 a jediné, čo sa mi vypíše je cesta, ktorú som zadal v zápise:
ErrorDocument 401 "C:/Program Files/EasyPHP-DevServer-14.1VC9/data/localweb/projects/My website/version 3.4/forbidden.html"

Súbor určite existuje. Názvy adresárov som si prekontroloval. Kde môže byť chyba?
Kubo2
Profil
V tých úvodzovkách.
Tomáš123
Profil
Kubo2:
V tých úvodzovkách.
Úvodzovky sú tam kvôli medzerám. Bez nich sa objaví Error 500.
Davex
Profil
Tomáš123:
Po zadaní nesprávnych údajov, alebo zrušení autentifikácie sa však objavil Error 401.
Promiň, je to moje chyba. Správný kód má být 401.

Cestu k chybové stránce uváděj vůči kořeni webu, tedy asi "/projects/My website/version 3.4/forbidden.html" (nevím, kde ti to přesně začíná). Mezerám v cestách bych se raději vyhnul, aby ty uvozovky nebyly potřeba.

Pokud bude chybová stránka v chráněné části webu, tak se k ní ještě musí povolit přístup bez autorizace.

Např. v souboru .htaccess ve stejném adresáři jako je chybová stránka:
<Files "forbidden.html">
    Satisfy Any
    Allow from all
</Files>
Kubo2
Profil
[#27] Tomáš123:

Ty si si ten odkaz nerozklikol a dokumentáciu neprečítal, že? Píše sa tam, že text v úvodzovkách sa berie ako customized error message.
Tomáš123
Profil
Davex:
Ďakujem funguje to. Je takáto úprava možná aj na hostingoch?

Kubo2:
Ty si si ten odkaz nerozklikol a dokumentáciu neprečítal, že?
Odkaz som si rozklikol už pri jeho prevej zmienke Davexom [#22]. Keďže tam toho je celkom dosť, nečítal som všetko.

Píše sa tam, že text v úvodzovkách sa berie ako customized error message.
Ďakujem za informáciu. V názvoch všetkých zložiek (okrem Program Files) som medzeru nahradil podčiarkovníkom.
« 1 2 »

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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