A következő oldalakra van szükségünk:
- Regisztrációs oldal regisztrációs űrlappal
- Fiókaktiválási oldal
- Jelszó-helyreállítási oldal
- Jelszó-visszaállítási oldal
A webhely bejelentkezési űrlapja a webhely összes oldalán (például a fejlécben) megjelenik.
Ezt a regisztrációs oldalt szeretnénk megszerezni:
Ide írja be fiókot meghatározza, hogy melyik csoportba regisztráljuk a felhasználót. Ezenkívül az azonosítás mezője (felhasználónév) az e-mail cím lesz.
Hívás hozzáadása a regisztrációs kódrészlethez az oldalhoz:
[[!Regisztráció? &submitVar=`register-btn` &activationResourceId=`27` &activationEmailTpl=`Email.Activation` &activationEmailSubject=`Regisztrált az example.com oldalon` &placeholderPrefix=`reg.` &successMsg=`Köszönjük a regisztrációt. A fiók aktiválásához szükséges linket tartalmazó e-mailt elküldtük a [[!+reg.email]] e-mail címére. A regisztráció befejezéséhez kövesse ezt a linket. ` &usernameField=`e-mail` &usergroupsField=`reg_type` &customValidators=`valueIn` &validate=`felhasználónév:üres, reg_type:valueIn=^Olvasok;Writers;Idlers ^, teljes név:kötelező:minLength=^6ed:minLengthquir =^6^, password_confirm:password_confirm=^password^, email:required:email` ]] [[!+error.message:default=`[[!$Register.Form]]`]]
Vegye figyelembe, hogy az összes regisztrációval kapcsolatos címkét uncachednek kell nevezni. Ugyanezek a szabályok érvényesek az űrlapok FormIt kódrészlettel történő feldolgozásakor is.
Elemezzük a hívásparamétereket:
&submitVar=`register-btn` – A bemeneti címke név attribútuma. Vagyis a kódrészlet csak akkor fog működni, ha az űrlapot egy adott nevű gombbal küldik be.
&activationResourceId=`42` - előretekintve a 42 annak az oldalnak az azonosítója, amelyen aktiválni fogjuk a felhasználót.
&activationEmailTpl=`Email.Activation` - egy darab aktiváló e-mailt, erről később.
&placeholderPrefix=`reg.` – azt jelzi, hogy az ebben a kódrészletben létrehozott valamennyi helyőrzőnek – ritka kivételektől eltekintve (erről bővebben később) – „reg.” szóval kell kezdődnie.
A &successMsg az az üzenet, amely az űrlap sikeres elküldése után jelenik meg. Vegye figyelembe, hogy tartalmazhat értékeket az űrlapból és bármely más címkéből. Ez az üzenet a [[!+error.message]] helyőrzőbe lesz írva. Elég furcsa név, és a dokumentációban Ebben a pillanatban hiba. Azt írja, hogy [[!+reg.error.message]], de a komponens kódjából az következik, hogy ez nem így van.
&usernameField=`email` – azt jelzi, hogy az e-mail mező lesz felhasználónévként használatos.
&usergroupsField=`reg_type` - meghatároz egy mezőt, amely beállítja azt a csoportot, amelyhez az új felhasználót hozzáadni kell.
&customValidators=`valueIn` – további manuálisan létrehozandó érvényesítőket ad meg.
&ellenőrzés – Az érvényesítőket minden mezőben vesszővel elválasztva adjuk meg, és ha ugyanahhoz a mezőhöz több érvényesítő szükséges, akkor kettősponttal is elválasztjuk őket. Elemezzük őket külön-külön:
A username:blank egy egyszerű spamcsapda, ami azt jelenti, hogy a felhasználónév mezőt üresen kell hagyni.
reg_type:valueIn=^Readers;Writers;Idlers^ - korlátozza a lehetséges csoportokat a megadott háromra. Az eredeti disztribúcióban ilyen nincs, és a gonosz hackerek regisztrálhatnak például az Adminisztrátor csoport alatt (ha nem nevezted át).
fullname:required:minLength=^6^ - a teljes név mezőnek nem szabad üresnek lennie, és legalább 6 karaktert kell tartalmaznia.
jelszó:required:minLength=^6^ - ugyanaz a jelszónál.
password_confirm:password_confirm=^password^ - a jelszavaknak egyeznie kell.
email:required:email - az e-mail-cím nem lehet üres, és a tényleges e-mail.
A [[!+error.message:default=`[[!$Register.Form]]`]] konstrukció üzenetet jelenít meg az űrlap vagy az űrlap egy részének sikeres elküldéséről, ha éppen most lépett be az oldalra vagy töltötte ki azt helytelenül.
Hozzuk létre a fenti valueIn validátort. Ehhez hozzon létre egy valueIn nevű kódrészletet és a következő kódot:
$értékIn = explode(";", $param); return in_array($érték, $értékIn);
Most létre kell hoznia egy darabot Regisztráció.Űrlap. Ebben az esetben a következő lesz (a Bootstrap 3 használatával):
Válassza ki a fiók típusát Chukcha-Reader Paysatel Idler Mutatkozzon be: [[!+reg.error.fullname:notempty=`[[!+reg.error.fullname]]`]] E-mail: [[!+reg.error.email : notempty=`[[!+reg.error.email]]`]] Jelszó: [[!+reg.error.password:notempty=`[[!+reg.error.password]]`]] Jelszó ismétlése: [ [!+reg.error.password_confirm:notempty=`[[!+reg.error.password_confirm]]`]]
Minden mező kitöltése kötelező
Ebben a formában megjegyzek néhány dolgot a MODX-ről:
email; echo "Üzenet: " . $adat->üzenet; // e-mailt küldött $to = $data->email; $subject = "Teszt e-mail webhely az angularjs kapcsolatfelvételi űrlap teszteléséhez"; $üzenet = $adat->üzenet; $headers = "Feladó: " . $adat->név .. "\r\n" .. "\r\n" . "XMailer: PHP/" . phpversion(); // PHP mail függvény küldeni Email egy e-mail címre mail($címzett, $tárgy, $üzenet, $fejlécek); ?>
Fontos, hogy a webalkalmazások készítése során komolyan vegyük a biztonságot, különösen, ha a felhasználóktól származó adatokról van szó.
Általános biztonsági szabály, hogy ne bízzon senkiben, így nem várhatja el a felhasználóktól, hogy mindig a megfelelő értékeket írják be az űrlapokba. Például ahelyett, hogy a megfelelő e-mail címet írná be a mezőbe, a felhasználó rossz címet írhat be, vagy akár rosszindulatú adatokat is megadhat.
Ami a felhasználói adatok érvényesítését illeti, azt mind a kliens oldalon (böngészőben), mind a szerver oldalon meg lehet tenni.
Korábban az ügyféloldali érvényesítést csak JavaScript használatával lehetett elvégezni. De a dolgok megváltoztak (vagy majdnem megváltoztak), mert a HTML5-tel az érvényesítés a böngészőben is elvégezhető anélkül, hogy bonyolult JavaScript-ellenőrző szkripteket kellene írni.
Űrlapérvényesítés HTML5-telA HTML5 meglehetősen robusztus mechanizmust biztosít a következő címkeattribútumok alapján: típus , minta és követelmény . Ezekkel az új attribútumokkal az adatok ellenőrzésének egy részét kiszervezheti a böngészőnek.
Vessünk egy pillantást ezekre az attribútumokra, hogy megtudjuk, hogyan segíthetik az űrlap érvényesítését.
típusú attribútumEz az attribútum megmondja, hogy melyik beviteli mezőt kell megjeleníteni az adatfeldolgozáshoz, például a már ismert típusú mezőt
Néhány beviteli mező már megadja szabványos módokonérvényesítések, írás nélkül kiegészítő kód. Például ellenőriz egy mezőt, hogy megbizonyosodjon arról, hogy a megadott érték megegyezik egy érvényes e-mail cím mintájával. Ha egy mezőbe érvénytelen karaktert írnak be, az űrlapot az érték kijavításáig nem lehet elküldeni.
Próbáljon meg játszani az e-mail mező értékeivel az alábbi demóban.
Vannak más szabványos mezőtípusok is, például a számok, URL-ek és telefonszámok érvényesítésére.
Megjegyzés: A telefonszámok formátuma országonként eltérő a telefonszámok számjegyeinek számában és a formátumban mutatkozó eltérések miatt. Ennek eredményeként a specifikáció nem határoz meg algoritmust a telefonszámok ellenőrzésére, így a cikk írásakor ez a lehetőség a böngészők rosszul támogatják.
Szerencsére a telefonszám-ellenőrzés elvégezhető a minta attribútum használatával, amely egy reguláris kifejezést vesz argumentumként, amelyet a következőkben nézünk meg.
minta attribútumA minta attribútum valószínűleg sok front-end fejlesztőt ugrásra késztet örömében. Ez az attribútum reguláris kifejezést fogad el (hasonlóan a reguláris formátumhoz JavaScript kifejezések), amely ellenőrzi a mezőben megadott adatok helyességét.
A reguláris kifejezések a szöveg elemzésére és manipulálására használt nyelvek. Gyakran használják összetett keresési és helyettesítési műveletekhez, valamint a bevitt adatok érvényesítéséhez.
Manapság a reguláris kifejezések megtalálhatók a legnépszerűbb programozási nyelvekben, valamint számos szkriptnyelvben, szerkesztőben, alkalmazásban, adatbázisban és parancssori segédprogramban.
A reguláris kifejezések (RegEX) hatékony, tömör és rugalmas eszköz a szöveges karakterláncok, például egyedi karakterek, szavak vagy karakterminták egyeztetésére.
Ha egy reguláris kifejezést ad át a minta attribútumának értékeként, megadhatja, hogy mely értékek elfogadhatók adott mező bevitel, valamint a felhasználó tájékoztatása a hibákról.
Nézzünk meg néhány példát a reguláris kifejezések használatára a beviteli mezők értékének ellenőrzésére.
TelefonszámokMint korábban említettük, a tel mező típusát a böngészők nem támogatják teljes mértékben a telefonszám-formátumok különböző országokban tapasztalható következetlenségei miatt.
Például egyes országokban a telefonszám formátuma xxxx-xxx-xxxx , és a telefonszám valami ilyesmi lesz: 0803-555-8205 .
A reguláris kifejezés, amelyre ez a minta illeszkedik: ^\d(4)-\d(3)-\d(4)$ . A kódban ez így írható:
telefonszám:
Alfanumerikus értékek A kötelező attribútumEz egy logikai attribútum, amely azt jelzi, hogy ennek a mezőnek az értéke kötelező az űrlap elküldéséhez. Amikor ezt az attribútumot hozzáadja egy mezőhöz, a böngésző megköveteli a felhasználótól, hogy töltse ki a mezőt az űrlap elküldése előtt.
Ezzel megkímél minket attól, hogy JavaScripttel kelljen végrehajtani a mezőellenőrzést, ami némi időt takaríthat meg a fejlesztőknek.
Például: vagy (XHTML-kompatibilitásért)
Az összes fent látott demó a kötelező attribútumot használja, így kipróbálhatja úgy, hogy megpróbálja elküldeni az űrlapot a mezők kitöltése nélkül.
KövetkeztetésA böngésző támogatása az űrlapérvényesítéshez elég jó, a régebbi böngészőkhöz pedig polifilleket is használhat.
Érdemes megjegyezni, hogy csak a böngészőoldali érvényesítésre hagyatkozni veszélyes, mivel ezeket az ellenőrzéseket a támadók vagy a botok könnyen megkerülhetik.
Nem minden böngésző támogatja a HTML5-öt, és nem minden, a szkriptbe küldött adat származik az űrlapról. Ez azt jelenti, hogy mielőtt véglegesen elfogadnánk az adatokat a felhasználótól, ellenőrizni kell azok helyességét a szerver oldalon.
Miért telepítettem ezt az űrlapot?Egy brute force támadás folyik jelenleg a webhelyén. A brute-force attack egy jelszókitaláló támadás. Ebben az esetben a jelszó a webhely adminisztrációs paneljéhez van kiválasztva.
A webhelye feltörésének megelőzése és biztonságának növelése érdekében további védelmet telepítettünk.
Hogyan férek hozzá most a webhely adminisztrációs paneljéhez?Most, amikor eléri webhelye adminisztrációs paneljét (Joomla vagy WordPress rendszeren), egy további bejelentkezési és jelszóbeviteli ablak jelenik meg a „kérem, használja a vezérlőpult jelszavát” felirattal. Bejelentkezésként meg kell adnia tárhelyszolgáltatásának bejelentkezési adatait, ez így néz ki: "u1234567". Jelszóként a tárhelyszolgáltatás jelenlegi jelszava.
Az alapvető HTTP-hitelesítés átadása után egy szabványos engedélyezési mező jelenik meg webhelye adminisztrációs panelén. Most meg kell adnia a webhely rendszergazdájának bejelentkezési nevét és jelszavát.
Hogyan működik a HTTP alapszintű hitelesítés
Amikor beír egy bejelentkezési jelszót az alap hitelesítési ablakba, a bejelentkezési és jelszókivonat értéke összehasonlításra kerül a speciális fájl~/etc/users , elérhető a tárhely vezérlőpultján. A fájl tartalma valahogy így néz ki: "u1234567:dm48bspxIO3rg" . Ahol az „u1234567” a felhasználónév, a „dm48bspxIO3rg” pedig a jelszó hash-je (megjegyzés: csak a hash, magát a jelszót nem!). A jelszókivonat a jelszó egy adott algoritmus szerinti átalakításának eredménye.
Így amikor megad egy felhasználónevet és jelszót az alap hitelesítési ablakban, a rendszer a beírt jelszóból kivonatot vesz, és összehasonlítja a ~/etc/users fájl hash értékével. Ha az értékek egyeznek, Ön hitelesítve van.
Nem tudom átadni az alapvető hitelesítést
Valószínűleg rossz jelszót ad meg. Telepítés új jelszó alap hitelesítéshez:
Ha átment az alapszintű hitelesítésen, de nem tud közvetlenül bejelentkezni a Joomla vagy a WordPress webhely adminisztrációs paneljére, használja a súgót:
A webhely biztonságának javítása érdekében:
- módosítsa a szuperfelhasználói bejelentkezést valami egyedibbre. Ne használjon rövid neveket, jobb, ha az utónevet a vezetéknévvel együtt használja. Az interneten számos forrás található, ahol a legnépszerűbb bejelentkezési adatokat gyűjtik össze. Ismerkedjen meg velük, és soha ne használja őket;
- állítson be egy összetett webhely rendszergazdai jelszót. Az összetett jelszónak tartalmaznia kell kis- és nagybetűket, számokat és további karaktereket, például "* - _ # :" stb. A jelszó hosszának legalább 6 karakternek kell lennie. Lehetőleg 10 vagy több.
A HTTP alapvető hitelesítési űrlap eltávolítása:
AuthType Basic AuthName "kérjük, használja a vezérlőpult jelszavát" AuthUserFile .../users Valid-user szükséges
Egy sor megjegyzéséhez tegyen egy font jelet ("#") a sor elejére, így.