Kako staviti lozinku na html stranicu. Stavili smo lozinku na stranicu. Korištenje posebnog softvera

Dragi prijatelji, drago mi je što vas ponovno mogu pozdraviti na svom blogu “”. Danas ćemo govoriti o tome kako postaviti lozinku na stranicu web stranice WordPress, ovdje je sve vrlo jednostavno, ali čemu služi? Danas ću vam pokušati odgovoriti na ova i druga pitanja.

Zašto staviti lozinku na stranicu?

Ponekad je potrebno ograničiti pristup određenim dijelovima stranice; ti dijelovi mogu sadržavati informacije za povlaštene korisnike (često se prakticira) ili pristup skrivenim dijelovima može biti plaćen. Naknada se može naplatiti jednokratno ili u obliku pretplate, npr. jednom mjesečno. Na taj način možete napraviti sigurnu web stranicu i omogućiti plaćeni pristup svojim posjetiteljima.

Danas postoji mnogo ponuda na internetu u kojima se predlaže sudjelovanje u plaćenoj obuci ili kupnja tečaja na temu unovčavanja stranica s plaćenim pristupom određenim stranicama, ali ne biste ih trebali kupiti. Najvjerojatnije tamo nećete pronaći ništa novo, ali ćete u ovom članku naučiti kako postaviti lozinku na stranici web stranice i kako je promijeniti, potpuno besplatno.

Mislim da je princip zarađivanja na plaćenom pristupu jasan: postavite lozinku, prihvatite plaćanje, pošaljite lozinku za pristup. Ako se radi o pretplati, promijenite lozinku jednom mjesečno, ponovno naplatite i pošaljite novu lozinku. Sve se to može automatizirati pomoću izvrsne usluge e-autopay.com, ova usluga je vrlo zgodna u smislu prihvaćanja plaćanja i automatskog slanja elektroničke i fizičke robe, PIN kodova i tako dalje, sve se može konfigurirati u zgodan affiliate program, ja savjetujemo da obratite pozornost , uslugu koriste svi poznati informacijski biznismeni kao što su Azamat Ushanov, Alexander Borisov i mnogi drugi. Inače, implementiran je i na servisu e-autopay.com.

Sada saznajmo kako postaviti lozinku na stranici WordPress stranice. Da bismo to učinili, moramo, naravno, prvo kreirati željenu stranicu, a zatim otići na uređivanje objave i otići na karticu "Objavi" i kliknuti na vezu "uredi", pogledajte sliku.

Zatim ćete vidjeti sljedeći prozor u kojem možete odabrati vidljivost, javno, privatno ili zaštićeno lozinkom, a također možete prikvačiti stranicu na samom vrhu na početnoj stranici, ali nam je potrebna lozinka, odaberite željenu funkciju i postavite lozinku za stranicu, kao što je prikazano na slici ispod.

Nakon svih navedenih koraka, sve što trebate učiniti je objaviti stranicu u pravo vrijeme. Na ovaj jednostavan način možete kreirati stranice s lozinkom na svom blogu i time kreirati plaćeni ili ograničeni pristup raznim informacijama. Na primjer, na mom blogu, pristup besplatnom tečaju je ograničen, pristup se može dobiti samo nakon pretplate na ovaj tečaj, nakon aktivacije pretplate, pristupna lozinka se šalje na vaš e-mail, sve je vrlo jednostavno i sve je automatski. Kao što vidite, u tome nema ništa komplicirano, možete postaviti lozinke na bilo koje stranice i članke svoje web stranice.

Sada znate kako staviti lozinku na stranicu ili članak na web mjestu. Nadam se da će vam ove informacije donijeti koristi i nove ideje za zarađivanje novca na vašoj web stranici. Kao i uvijek, veselim se vašim pitanjima i komentarima na ovaj članak.

Odlučio sam opisati načine zaštite dijela stranice lozinkom. Tema je zapravo dosta velika, pa ću se prvi put ograničiti na php+mysql autorizaciju.

Prvo pitanje koje se obično postavlja je kako lozinkom zatvoriti imenik s administracijskim skriptama. U ovom slučaju nisu potrebni nikakvi dodaci - jedan ili više administratora imaju ista prava, a osobnosti se rijetko mijenjaju. Najlakši način u ovoj situaciji je korištenje standardne autorizacije poslužitelja - stavite .htaccess i .htpasswd datoteke i upišite potrebne parametre u njih. O tome je već dosta napisano, pa neću reći ništa posebno novo.

Dodat ću dvije stvari. Prvi je gdje staviti .htpasswd datoteku. Eksperimentalno sam otkrio da ako je npr. put do dokumenta s porukom o pogrešci (ErrorDocument) napisan u odnosu na sistemsku varijablu DocumentRoot. Ali put do datoteke lozinke (UserFile) je zapisan u odnosu na ServerRoot. Koliko ja razumijem, ne možete staviti .htpasswd iznad ServerRoot - "../" se ne percipira. Sve je to učinjeno kako biste datoteku s lozinkama mogli postaviti, na primjer, jednu razinu iznad korijenskog direktorija stranice, tako da uopće nema pristupa datoteci s mreže.

Drugo je da skripta može saznati tko ju otvara i lozinku: varijable $PHP_AUTH_USER i $PHP_AUTH_PW.

Glavni nedostatak ove metode je što poslužitelj ne može blokirati pogađanje lozinke (nakon nekoliko neuspješnih pokušaja prijave, od korisnika se traži da pričeka sat ili dva, a za to vrijeme se pozivi s njegove IP adrese ignoriraju). Ovo piše u službenoj dokumentaciji Apachea.

Drugi nedostatak je potreba za prepisivanjem datoteka s lozinkama prilikom brisanja korisnika ili uvođenja novog. Ali ako se to događa rijetko, ova metoda je sasvim dovoljna i nećete morati brinuti o pisanju mehanizma autorizacije.

Automatizacija autorizacije

Ovo je potrebno ne samo za pojednostavljenje rada s velikim brojem korisnika i njihovom velikom fluktuacijom. Ako trebate čuvati dodatne podatke o korisnicima ili vam je potrebna fleksibilna diferencijacija prava, bolje je prenijeti autorizaciju u bazu podataka.

Svaka stranica zatvorenog teritorija uključuje datoteku sa sljedećim kodom:

$result = mysql_query(" SELECT * FROM person WHERE login="". preg_replace("/[^w_-]/","",$PHP_AUTH_USER). "" AND pass="". md5($PHP_AUTH_PW). " ""); if (@mysql_num_rows($result)!=1) ( header("WWW-Authenticate: Basic realm="User area""); header("HTTP/1.0 401 Unauthorized"); print("Za prijavu u korisničko područje ​​stranice, morate unijeti svoje korisničko ime i lozinku."); exit(); ); $user_row = mysql_fetch_array($rezultat);

U prvom retku iz prijave se uklanjaju svi znakovi osim slova, brojeva, crtica i podvlaka. Zatim se provjerava broj primljenih redaka i samo ako je jedan redak, pristup se odobrava. U drugim slučajevima, korisnik će vidjeti prozor u pregledniku koji od vas traži da unesete prijavu i lozinku. Ako se korisnik uspješno prijavio, imamo sve podatke o njemu u polju $user_row.

Naravno, primjer koji sam naveo ima niz značajnih nedostataka. Nemojte ga prepisivati ​​jedan na jedan, kako ne biste postali žrtva pokušaja pogađanja lozinke, jer
1. ovdje nema zaštite od selekcije
2. ako je korisnička tablica velika, prilikom pogađanja lozinke napadač će najvjerojatnije preplaviti bazu

I zadnja metoda za danas je pohranjivanje šifriranih podataka u kolačiće.

Postoji skripta za prijavu, ostalo uključuje kod koji vam omogućuje samo nastavak radnji u zatvorenom prostoru - ako kolačići isteknu ili se on odatle odjavi, morat ćete se vratiti na stranicu za prijavu.

Ulazna skripta provjerava prijavu i lozinku i izdaje dva kolačića. U prvom - prijava, kako bi se odmah identificirao korisnik (u bazi podataka polje za prijavu je, naravno, jedinstveno ili čak ključno). Drugi kolačić sadrži hash vremena prijave i lozinke (za potpunost tajnosti ovim redcima dodajem slovo "Y" - tada je gotovo nemoguće pronaći hash :).

Svi ostali programi uključuju kod koji čini sljedeće. Izvršava zahtjev bazi podataka - odabire redak s primljenom prijavom. Iz ovog retka uzima polje "log_time" i lozinku i od njih pravi hash, kao što je gore opisano. Uspoređuje ga s onim što je primio, i ako se podudaraju, izdaje novi hash kolačić, opet, od lozinke, vremena i slova "Y" i postavlja upit bazi podataka "UPDATE user SET log_time='...' WHERE login ='$ cookie_login'".

if (isset($HTTP_COOKIE_VARS[$cookie_login]) && isset($HTTP_COOKIE_VARS[$cookie_code])) ( $login = $HTTP_COOKIE_VARS[$cookie_login]; $code = $HTTP_COOKIE_VARS[$cookie_code]; $result = mysql_query("SELECT) date_format(log_date,"%Y%m%d%H%i%s") kao log_date1,pass,uid FROM user WHERE email="$login" AND log_date>"DATE_SUB(NOW(),INTERVAL 15 MINUTE)"" ); if (!mysql_error() && @mysql_num_rows($result)==1) ( $log_time0 = vrijeme(); $log_time1 = datum("YmdHis", $log_time0); $log_time2 = datum("Y-m-d H:i :s", $log_time0); $current_user = mysql_fetch_array($result); if (md5($current_user["pass"].$current_user["log_date1"].$md5letter) == $code) ( mysql_query("UPDATE) korisnik SET log_date="$log_time2" WHERE uid=".$current_user["uid"]); setcookie($cookie_code, md5($current_user["pass"].$log_time1.$md5letter), time()+900, $site_path); $auth = true; ) else unset($current_user); ); );

Opet, ovdje nema zaštite od odabira i napada na poslužitelj (usput, ovdje možete napisati IP adresu korisnika umjesto slova "Y" - tako da, na primjer, susjed ureda ne može uzeti datoteku s cookie i prijaviti se sa svog računala).

Lozinka za stranicu. Dio 2. Blokiranje zapošljavanja

Kad sam zadnji put objavio ovaj problem, šutnuli su me na mjestu, rekavši da bi takva blokada mogla izbaciti server iz tračnica.

Ali prvo o blokadi odskoka. Banalnosti, ali ipak. Lozinka od deset znakova koja se sastoji od latiničnih slova i brojeva znači da postoji mnogo opcija. Ako pogodite lozinku 1.000.000 puta u sekundi, trebat će nekoliko tisuća godina. No, budući da je takve gluposti teško zapamtiti, često stvaramo lozinke od smislenih riječi. Prije nekoliko godina pokazalo se da se većina lozinki može pogoditi pomoću rječnika od 10.000 riječi. Svojedobno se na mreži pojavio crv (takav virus) koji se penjao po Unix poslužiteljima, koristeći njihove sigurnosne rupe, i pokupio lozinke za privilegirane korisnike pomoću... pravopisnog rječnika Unix sustava. Nije trebalo ništa nositi!

Svaki korisnik, sve dok ne unese točnu prijavu i lozinku, smatra se zlim hakerom. S čime se suočavamo kada korisnik unese nešto pogrešno?
zaboravnost (za to pristojne web stranice imaju obrazac "zaboravljena lozinka" za slanje te iste lozinke na e-mail unesen u postavkama sustava)
ugađanje ("jer me nije briga")
odabir lozinke pomoću rječnika (vjerojatnost uspješnog odabira je velika pa je potrebno zatvoriti, pogotovo ako je stranica komercijalne prirode)
DoS napad (kako ne biste preopteretili poslužitelj, trebate minimizirati radnje koje će skripta izvesti u ovom slučaju)

Dugo sam razmišljao o tome kako bih mogao izazvati preopterećenje poslužitelja ako se mehanizam zaštite temelji na datotekama. Pokazalo se da je lako (koliko će to koštati, drugo je pitanje). Dakle, recimo da poslužitelj to neće moći podnijeti ako skripta pokuša otvoriti datoteke za pisanje 1000 puta u sekundi i zapisati podatke u njih. Budući da će nakon 5 neuspješnih pokušaja prijave korisniku odmah biti zabranjen pristup (bez upisa podataka u datoteku), potrebno je pronaći 200 jedinstvenih IP-ova s ​​kojih će se pet puta kontaktirati. To je moguće. Okačimo html banner s pet oznaka u scroller bannera:

Korisnik odmah postavlja pet zahtjeva; poslužitelj piše u datoteku pet puta (usput, u nekim preglednicima može se pojaviti prozor za unos vaše prijave i lozinke). Možete napraviti HTML stranicu s pet takvih slika, a samu stranicu umetnuti putem iframea na stranicu koju posjećujete (putem iframea - tako da se polje referera neće pronaći. Malo je vjerojatno da će usluga podrške besplatnog hosting će se baviti takvim stvarima kao što je kopanje po log datotekama u potrazi za refererima) . Primjeri koje sam naveo su, naravno, nategnuti, ali sama činjenica da se može iskoristiti takav nedostatak u sustavu je dokazana. Inače, nešto slično se već dogodilo.

Ali ipak ću vam dati ovu metodu - uzalud sam je napisao ili što? Usput, može se koristiti bez puno straha za ograničeni broj adresa (na primjer, za lokalnu mrežu tvrtke) postavljanjem .htaccess datoteke u imenik sa sljedećim sadržajem:

nalog odbiti, dopustiti
odbiti od svih
dopustiti od xxx.xxx.xxx

A evo i koda programa:

$pogreške = 0; $fn = "ignoriraj/". preg_replace("[^d.]", "", $REMOTE_ADDR. ".". $HTTP_FORWARDED_FOR); if (is_file($fn)) ( if (filectime($fn)< time()-3600) unlink($fn); else $errors = fread(fopen($fn, "r"), 2); }; if ($errors>5) ( print ("Pristup je zatvoren. Vratite se za sat vremena."); exit(); ); // ovdje se uspostavlja veza s poslužiteljem baze podataka. da ne diraju uzaludno ako korisnik odmah “dobije batine”. $result = mysql_query("SELECT * FROM user WHERE login="". preg_replace("/[^w_-]/", "", $PHP_AUTH_USER). "" AND pass="". md5($PHP_AUTH_PW). " ""); if (@mysql_num_rows($result)!=1) ( header("WWW-Authenticate: Basic realm="secret area""); header("HTTP/1.0 401 Unauthorized"); ispis ("Potrebna autorizacija"); fwrite (fopen($fn, "w"), ++$greške); izlaz(); ); $current_user = mysql_fetch_array($rezultat); mysql_free_rezultat($rezultat); Međutim, grijeh je raditi s datotekama ako postoji baza podataka. Vic. Za neuspjele autorizacije kreiramo tablicu: CREATE TABLE unauth (korisničko ime VARCHAR(64) NOT NULL, pass VARCHAR(64) NOT NULL, ip VARCHAR(255), vrijeme prijave TIMESTAMP) I umjesto pristupa datotekama, radimo s bazom podataka. $greške = @mysql_result(mysql_query("SELECT count(username) as false FROM unauth WHERE vrijeme prijave>DATE_SUB(NOW(),INTERVAL 1 HOUR) AND ip="$REMOTE_ADDR""),0); if (mysql_error()) die(mysql_error()); if ($errors>5) ( print ("Pristup je zatvoren. Vratite se za sat vremena."); exit(); ); $result = mysql_query("SELECT * FROM user WHERE login="". preg_replace("/[^w_-]/", "", $PHP_AUTH_USER). "" AND pass="". md5($PHP_AUTH_PW). " ""); if (@mysql_num_rows($result)!=1) ( zaglavlje("WWW-Authenticate: Basic realm="tajno područje""); zaglavlje("HTTP/1.0 401 neovlašteno"); ispis ("Potrebna autorizacija"); mysql_query ("INSERT INTO unauth (korisničko ime, lozinka, ip) VRIJEDNOSTI ("$PHP_AUTH_USER", "$PHP_AUTH_PW", "$REMOTE_ADDR $HTTP_X_FORWARDED_FOR")"); izlaz(); ); $current_user = mysql_fetch_array($rezultat); mysql_free_rezultat($rezultat);

Poslovna je odluka hoćete li pohraniti stare podatke za statistiku ili ne. Ako ništa drugo, mogu se izbrisati izvršavanjem sljedećeg zahtjeva prije autorizacije:

DELETE FROM unauth WHERE vrijeme prijave