Si të vendosni një fjalëkalim në një faqe html. Ne vendosim një fjalëkalim në faqe. Duke përdorur softuer special

Të dashur miq, jam i lumtur t'ju mirëpres përsëri në blogun tim "". Sot do të flasim se si të vendosni një fjalëkalim në një faqe të internetit WordPress, gjithçka është shumë e thjeshtë këtu, por për çfarë është? Sot do të përpiqem t'ju përgjigjem këtyre dhe pyetjeve të tjera.

Pse të vendosni një fjalëkalim në faqe?

Ndonjëherë është e nevojshme të kufizohet aksesi në seksione të caktuara të faqes; këto seksione mund të përmbajnë informacione për përdoruesit e privilegjuar (shpesh të praktikuar), ose qasja në seksione të fshehura mund të paguhet. Tarifa mund të paguhet ose një herë ose në formën e një tarife abonimi, për shembull, një herë në muaj. Në këtë mënyrë ju mund të krijoni një faqe interneti të sigurt dhe të siguroni akses me pagesë për vizitorët tuaj.

Në ditët e sotme ka shumë oferta në internet ku propozohet të merrni pjesë në një trajnim me pagesë ose të blini një kurs me temën e fitimit të parave të faqeve me akses të paguar në faqe të caktuara, por nuk duhet t'i blini ato. Me shumë mundësi, nuk do të gjeni asgjë të re atje, por do të mësoni se si të vendosni një fjalëkalim në faqen e internetit dhe si ta ndryshoni atë në këtë artikull, plotësisht falas.

Unë mendoj se parimi i fitimit të parave në aksesin me pagesë është i qartë: vendosni një fjalëkalim, pranoni pagesën, dërgoni fjalëkalimin e hyrjes. Nëse kjo është një tarifë abonimi, atëherë ndryshoni fjalëkalimin një herë në muaj, mblidhni përsëri pagesën dhe dërgoni një fjalëkalim të ri. E gjithë kjo mund të automatizohet duke përdorur shërbimin e shkëlqyer e-autopay.com, ky shërbim është shumë i përshtatshëm për sa i përket pranimit të pagesave dhe dërgimit automatik të mallrave elektronike dhe fizike, kodeve PIN dhe kështu me radhë, gjithçka mund të konfigurohet në një program të përshtatshëm filialesh, unë ju këshillojmë t'i kushtoni vëmendje , shërbimi përdoret nga të gjithë biznesmenët e njohur të informacionit si Azamat Ushanov, Alexander Borisov dhe shumë të tjerë. Nga rruga, ai zbatohet edhe në shërbimin e-autopay.com.

Tani le të zbulojmë se si të vendosim një fjalëkalim në një faqe të faqes së WordPress. Për ta bërë këtë, natyrisht, së pari duhet të krijojmë faqen e dëshiruar, dhe më pas të shkojmë te redaktoni postimin dhe të shkoni te skedari "Publikoni" dhe të klikoni në lidhjen "redakto", shikoni figurën.

Pastaj do të shihni dritaren e mëposhtme ku mund të zgjidhni dukshmërinë, publike, private ose të mbrojtur me fjalëkalim, dhe gjithashtu mund të vendosni faqen në krye në faqen kryesore, por ne kemi nevojë për një fjalëkalim, zgjedhim funksionin e dëshiruar dhe vendosim një fjalëkalim për faqen, siç tregohet në figurën më poshtë.

Pas gjithë hapave të mësipërm, gjithçka që duhet të bëni është të publikoni faqen në kohën e duhur. Në këtë mënyrë të thjeshtë, ju mund të krijoni faqe me një fjalëkalim në blogun tuaj dhe në këtë mënyrë të krijoni akses me pagesë ose të kufizuar në informacione të ndryshme. Për shembull, në blogun tim, aksesi në një kurs falas është i kufizuar, aksesi mund të merret vetëm pasi të abonoheni në këtë kurs, pas aktivizimit të abonimit, një fjalëkalim aksesi dërgohet në emailin tuaj, gjithçka është shumë e thjeshtë dhe gjithçka është automatike. Siç mund ta shihni, nuk ka asgjë të komplikuar në lidhje me këtë; ju mund të vendosni fjalëkalime në çdo faqe dhe artikull të faqes tuaj.

Tani ju e dini se si të vendosni një fjalëkalim në një faqe ose artikull në një sajt. Shpresoj se ky informacion do t'ju sjellë përfitime dhe ide të reja për të fituar para në faqen tuaj të internetit. Si gjithmonë, mezi pres pyetjet dhe komentet tuaja për këtë artikull.

Vendosa të përshkruaj mënyra për të mbrojtur një pjesë të faqes me një fjalëkalim. Tema është në fakt mjaft e madhe, kështu që për herë të parë do të kufizohem në autorizimin php+mysql.

Pyetja e parë që zakonisht lind është se si të mbyllni drejtorinë me skriptet e administrimit me një fjalëkalim. Në këtë rast, nuk nevojiten asgjë - një ose më shumë administratorë kanë të njëjtat të drejta dhe personalitetet rrallë ndryshojnë. Mënyra më e lehtë në këtë situatë është përdorimi i autorizimit standard të serverit - vendosni skedarët .htaccess dhe .htpasswd dhe shkruani parametrat e nevojshëm në to. Tashmë është shkruar shumë për këtë, kështu që nuk do të them asgjë veçanërisht të re.

Unë do të shtoj dy gjëra. E para është se ku duhet vendosur skedari .htpasswd. Eksperimentalisht, zbulova se nëse, për shembull, shtegu i një dokumenti me një mesazh gabimi (ErrorDocument) është shkruar në lidhje me variablin e sistemit DocumentRoot. Por rruga për në skedarin e fjalëkalimit (UserFile) është shkruar në lidhje me ServerRoot. Me sa kuptoj unë, nuk mund të vendosni .htpasswd mbi ServerRoot - "../" nuk perceptohet. E gjithë kjo bëhet në mënyrë që të mund të vendosni një skedar me fjalëkalime, për shembull, një nivel mbi direktorinë rrënjësore të faqes, në mënyrë që të mos ketë fare akses në skedar nga rrjeti.

E dyta është që skripti mund të zbulojë se kush po e hap atë dhe fjalëkalimin: variablat $PHP_AUTH_USER dhe $PHP_AUTH_PW.

Disavantazhi kryesor i kësaj metode është se serveri nuk mund të bllokojë hamendjen e fjalëkalimit (pas disa përpjekjeve të pasuksesshme të hyrjes, përdoruesit i kërkohet të presë një ose dy orë, dhe gjatë kësaj kohe thirrjet nga adresa e tij IP injorohen). Kjo është shkruar në dokumentacionin zyrtar të Apache.

Një pengesë tjetër është nevoja për të rishkruar skedarët me fjalëkalime kur fshini një përdorues ose prezantoni një të ri. Por nëse kjo ndodh rrallë, kjo metodë është mjaft e mjaftueshme dhe nuk do të duhet të shqetësoheni për shkrimin e një mekanizmi autorizimi.

Automatizimi i autorizimit

Kjo është e nevojshme jo vetëm për të thjeshtuar punën me një numër të madh përdoruesish dhe qarkullimin e tyre të lartë. Nëse keni nevojë të mbani informacion shtesë për përdoruesit, ose keni nevojë për diferencim fleksibël të të drejtave, është më mirë të transferoni autorizimin në bazën e të dhënave.

Çdo faqe e një territori të mbyllur përfshin një skedar me kodin e mëposhtëm:

$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="Zona e përdoruesit"); header("HTTP/1.0 401 I paautorizuar"); print("Për t'u identifikuar në zonën e përdoruesit të faqes, duhet të futni emrin e përdoruesit dhe fjalëkalimin tuaj."); exit(); ); $rresht_përdorues = mysql_fetch_array($rezultat);

Në rreshtin e parë, të gjithë karakteret përveç shkronjave, numrave, vijave dhe nënvizave hiqen nga login. Numri i rreshtave të marra kontrollohet më pas dhe vetëm nëse është një rresht i jepet qasja. Në raste të tjera, përdoruesi do të shohë një dritare në shfletuesin që ju kërkon të futni një hyrje dhe fjalëkalim. Nëse përdoruesi është identifikuar me sukses, ne i kemi të gjitha informacionet rreth tij në grupin $user_row.

Natyrisht, shembulli që dhashë ka një sërë mangësish domethënëse. Mos e rishkruani një për një, në mënyrë që të mos bini viktimë e përpjekjeve për të gjetur fjalëkalime, sepse
1. këtu nuk ka mbrojtje kundër përzgjedhjes
2. nëse tabela e përdoruesve është e madhe, kur hamendësoni fjalëkalimin, një sulmues ka shumë të ngjarë të mbingarkojë bazën e të dhënave

Dhe metoda e fundit për sot është ruajtja e të dhënave të enkriptuara në cookie.

Ekziston një skript për t'u identifikuar, pjesa tjetër përfshin kodin që ju lejon të vazhdoni veprimet vetëm në një zonë të mbyllur - nëse cookie-t skadojnë ose ai del nga atje, do të duhet të ktheheni në faqen e hyrjes.

Skripti hyrës kontrollon hyrjen dhe fjalëkalimin dhe lëshon dy cookie. Në të parën - identifikimi, për të identifikuar menjëherë përdoruesin (në bazën e të dhënave, fusha e hyrjes është, natyrisht, unike apo edhe kyçe). Cookie-ja e dytë përmban një hash të kohës së hyrjes dhe fjalëkalimit (për fshehtësi të plotë, unë shtoj shkronjën "Y" në këto rreshta - atëherë është pothuajse e pamundur të gjesh hash :).

Të gjitha programet e tjera përfshijnë kodin që bën sa më poshtë. Bën një kërkesë në bazën e të dhënave - zgjedh rreshtin me hyrjen e marrë. Nga kjo rresht merr fushën "log_time" dhe fjalëkalimin dhe bën një hash prej tyre, siç përshkruhet më sipër. E krahason atë me atë që ka marrë, dhe nëse përputhen, lëshon një cookie të re hash, përsëri, nga fjalëkalimi, koha dhe shkronja "Y" dhe bën një pyetje në bazën e të dhënave "UPDATE user SET log_time='..." WHERE login ='$ cookie_login'".

nëse (isset($HTTP_COOKIE_VARS[$cookie_login]) && isset($HTTP_COOKIE_VARS[$cookie_code])) ( $login = $HTTP_COOKIE_VARS[$cookie_login]; $code = $HTTP_COOKIE_quescoult myde[$co]" date_format(log_date,"%Y%m%d%H%i%s") si log_date1,pass,uid FROM user WHERE email="$login" AND log_date>"DATE_SUB(TANI(),INTERVAL 15 MINUTE)"" ); nëse (!mysql_error() && @mysql_num_rows($result)==1) ($log_time0 = koha(); $log_time1 = data ("YmdHis", $log_time0); $log_time2 = data ("Y-m-d H:i :s", $log_time0); $current_user = mysql_fetch_array($result); nëse (md5($current_user["pass"].$current_user["log_date1"].$md5letter) == $code) ( mysql_query ("UPDATE përdoruesi SET log_date="$log_time2" WHERE uid=".$current_user["uid"]); setcookie($cookie_code, md5($current_user["pass"].$log_time1.$md5letter), kohë()+900, $site_path); $auth = e vërtetë; ) else unset ($current_user); );

Përsëri, nuk ka asnjë mbrojtje këtu nga përzgjedhja dhe sulmi në server (nga rruga, këtu mund të shkruani adresën IP të përdoruesit në vend të shkronjës "Y" - në mënyrë që, për shembull, një fqinj zyre të mos marrë një skedar me një cookie dhe identifikohu nga kompjuteri i tij).

Fjalëkalimi për faqen. Pjesa 2. Bllokimi i rekrutimit

Kur e postova këtë çështje herën e fundit, ata më goditën në vend, duke thënë se një bllokim i tillë mund të prishë serverin.

Por së pari, në lidhje me bllokimin e rikthimit. Banalitete, por gjithsesi. Një fjalëkalim me dhjetë karaktere i përbërë nga shkronja dhe numra latine do të thotë se ka shumë opsione. Nëse e merrni me mend një fjalëkalim 1,000,000 herë në sekondë, do të duhen disa mijëra vjet. Por meqenëse një gobbledygook i tillë është i vështirë për t'u mbajtur mend, ne shpesh bëjmë fjalëkalime nga fjalë domethënëse. Disa vite më parë, doli se shumica e fjalëkalimeve mund të hamendësohen duke përdorur një fjalor me 10,000 fjalë. Në një kohë, një krimb (një virus i tillë) u shfaq në rrjet, i cili ngjitej në serverët Unix, duke përdorur vrimat e tyre të sigurisë dhe merrte fjalëkalime për përdoruesit e privilegjuar duke përdorur... fjalorin drejtshkrimor të sistemit Unix. Nuk kishte nevojë të mbante asgjë!

Çdo përdorues, derisa të ketë futur hyrjen dhe fjalëkalimin e saktë, konsiderohet një haker i keq. Me çfarë kemi të bëjmë kur përdoruesi fut diçka gabimisht?
harresa (për këtë, faqet e internetit të mira kanë një formular "harrova fjalëkalimin" për të dërguar të njëjtin fjalëkalim në emailin e futur në cilësimet e sistemit)
përkëdhelje ("sepse nuk më intereson")
zgjedhja e një fjalëkalimi duke përdorur një fjalor (probabiliteti për një përzgjedhje të suksesshme është i lartë, kështu që ju duhet ta mbyllni atë, veçanërisht nëse faqja është e një natyre komerciale)
Sulmi DoS (për të mos mbingarkuar serverin, duhet të minimizoni veprimet që do të kryejë skripti në këtë rast)

Mendova për një kohë të gjatë se si mund të shkaktoj një mbingarkesë në server nëse mekanizmi i mbrojtjes bazohet në skedarë. Doli të ishte e lehtë (sa do të kushtojë është një pyetje tjetër). Pra, le të themi se serveri nuk do të jetë në gjendje ta trajtojë atë nëse skripti përpiqet të hapë skedarë për shkrim 1000 herë në sekondë dhe t'u shkruajë të dhëna atyre. Meqenëse pas 5 përpjekjeve të pasuksesshme për t'u identifikuar, përdoruesit do t'i mohohet menjëherë qasja (pa shkruar asnjë të dhënë në një skedar), është e nevojshme të gjenden 200 IP unike, nga të cilat të kontaktohen pesë herë. Eshte e mundur. Ne varim një baner html me pesë etiketa në rrotulluesin e banerit:

Përdoruesi bën menjëherë pesë kërkesa; serveri i shkruan skedarit pesë herë (nga rruga, në disa shfletues, mund të shfaqet një dritare për të futur hyrjen dhe fjalëkalimin tuaj). Ju mund të bëni një faqe HTML me pesë fotografi të tilla dhe të futni vetë faqen nëpërmjet një iframe në faqen që po vizitoni (nëpërmjet një iframe - në mënyrë që fusha referuese të mos gjendet. Nuk ka gjasa që shërbimi mbështetës i një falas hosting do të merret me gjëra të tilla si gërmimi nëpër skedarët e regjistrave në kërkim të referuesve) . Shembujt që dhashë janë, natyrisht, të largët, por vetë fakti që mund të përfitohet nga një e metë e tillë në sistem është vërtetuar. Nga rruga, diçka e ngjashme ka ndodhur tashmë.

Por unë do t'ju jap akoma këtë metodë - e shkrova kot, apo çfarë? Nga rruga, mund të përdoret pa shumë frikë për një numër të kufizuar adresash (për shembull, për rrjetin lokal të një kompanie) duke vendosur një skedar .htaccess në drejtori me përmbajtjen e mëposhtme:

urdhëro refuzo, lejo
mohoj nga të gjithë
lejoj nga xxx.xxx.xxx

Dhe këtu është kodi i programit:

$gabime = 0; $fn = "injoroj/". 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 ("Qasja është mbyllur. Ju lutemi kthehuni pas një ore."); dalje (); ); // këtu vendoset lidhja me serverin e bazës së të dhënave. për të mos prekur kot nëse përdoruesi “rrahet” menjëherë. $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 Paautorized"); print ("Kërkohet autorizimi"); fwrite (fopen($fn, "w"), ++$gabime); dalje (); ); $current_user = mysql_fetch_array($rezultat); mysql_free_rezultat($rezultat); Sidoqoftë, është mëkat të punosh me skedarë nëse ka një bazë të dhënash. Shaka. Për autorizimet e dështuara, ne krijojmë një tabelë: CREATE TABLE unauth (emri i përdoruesit VARCHAR(64) NOT NULL, kaloni VARCHAR(64) NOT NULL, ip VARCHAR(255), koha e hyrjes TIMESTAMP) Dhe në vend që të qasemi në skedarë, ne punojmë me bazën e të dhënave. $errors = @mysql_result(mysql_query("SELECT count(username) as false FROM unauth WHERE logintime>DATE_SUB(TANI(),INTERVAL 1 ORË) DHE ip="$REMOTE_ADDR""),0); nëse (mysql_error()) die(mysql_error()); if ($errors>5) ( print ("Qasja është mbyllur. Ju lutemi kthehuni pas një ore."); 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) ( header ("WWW-Authenticate: Basic realm="secret area""); header ("HTTP/1.0 401 Paautorized"); print ("Kërkohet autorizimi"); mysql_query ("INSERT INTO unauth (emri i përdoruesit, kalimi, ip) VALUES ("$PHP_AUTH_USER", "$PHP_AUTH_PW", "$REMOTE_ADDR $HTTP_X_FORWARDED_FOR")"); dalje (); ); $current_user = mysql_fetch_array($rezultat); mysql_free_rezultat($rezultat);

Nëse do të ruhen të dhënat e vjetra për statistika apo jo, është një vendim biznesi. Nëse ka ndonjë gjë, ato mund të fshihen duke ekzekutuar kërkesën e mëposhtme përpara autorizimit:

FSHI NGA paauth WHERE koha e hyrjes