Ch 6 logg inn med navn kreves. Sikkerhet for brukerdata. Løsninger på problemet "Beklager, det oppstod en feil" på Instagram

Skrevet 23. oktober kl 23:15.

Bruk av brukernavnbekreftelse for å øke sikkerheten regnskap

Som et ekstra sikkerhetstiltak gir vi deg et brukernavnverifiseringssystem for å forbedre kontosikkerheten på enkelte EA-sider, inkludert EA-kontosiden din.

  • Merk FIFA-spillere: denne funksjonen kreves for å få tilgang til FIFA Ultimate Team-servere og partnerapplikasjoner.

Dette sikkerhetstiltaket er utformet for å forhindre at folk logger seg på EA-kontoen din fra ukjente enheter uten passord og verifisering av brukernavnet ditt. Varsler vil bli sendt til din mobiltelefon eller e-post etter eget valg. Under verifiseringsprosessen for brukernavn, midlertidig digitale koder tilgang for hver spesifikke bruker som kreves for å logge på en konto fra en ukjent enhet.


Aktiver bekreftelse av brukernavn

1. Gå til ea.com og logg på.

2. Klikk på brukernavnet ditt, og velg deretter "Min konto".

3. Velg kategorien Sikkerhet, hvor du finner delen Verifisering av brukernavn.

4. Klikk Aktiver for å aktivere brukernavnsbekreftelse, skriv inn sikkerhetsspørsmålet ditt og velg ett av alternativene: e-post, identitetsapp eller SMS for å motta en bekreftelseskode.

  • Hvis du velger alternativet " E-post” i stedet for SMS, sørg for at e-postadressen som er oppgitt for kontoen din er en gyldig og fungerende adresse som du sjekker regelmessig for nye meldinger.
  • En identifikasjonsapp for nettbrett og mobiltelefoner lar deg generere bekreftelseskoder på disse enhetene for å logge på kontoen din.
  • Velg enhetstype fra rullegardinlisten og last ned Google Authenticator for Apple- og Android-enheter eller Authenticator for enheter som bruker operativsystem Windows.
  • Spillere av FIFA 15 på PlayStation 3 og Xbox 360 trenger ikke å ta ytterligere sikkerhetstiltak når de bekrefter brukernavnet med autentiseringsappen.

5. Du vil nå motta en bekreftelseskode når du prøver å logge på fra en ukjent enhet. Hver 90. dag vil du motta en bekreftelseskode når du logger på kontoen din fra pålitelige enheter. På denne måten kan bare du få tilgang til EA-kontoen din med en unik kode.


Om nødvendig kan du deaktivere brukernavnsbekreftelse ved å gå tilbake til kontoadministrasjonssiden og velge Deaktiver.*

Merk

  • *Ikke deaktiver verifisering av brukernavn hvis du spiller FIFA Ultimate Team, ellers vil du bli nektet tilgang.
  • Sørg for at du også oppretter og bekrefter et sikkerhetsspørsmål og svar for FIFA Ultimate Team.

Sett opp identifikasjonsappen din

Identifikasjonsappen er mest rask måte sikkert bekrefte identiteten din. Sett opp en identifikasjonsapplikasjon på din mobil enhet for å logge på med koden den genererer for to-trinns identifikasjon.

1. Åpne kategorien Sikkerhet på siden Min konto og finn delen Verifisering av brukernavn.

2. Klikk på Aktiver for å aktivere brukernavnverifisering, svar på sikkerhetsspørsmålet, velg Identitetsapplikasjon og klikk på Fortsett.

3. Velg telefonoperativsystemet du trenger fra rullegardinlisten og skann QR-koden ved hjelp av en strekkodeleser-applikasjon eller søk appbutikken for telefonen din etter autentisering etter riktig applikasjon: Google Authenticator på Android og iOS eller Authenticator på Windows Telefon.

4. Åpne identifikasjonsprogrammet og velg alternativet for å legge til en konto manuelt.

5. Skann QR-koden eller skriv inn hemmelig kode for å koble identitetsappen din til EA-kontoen din.

6. Fullfør konfigureringen av identifikasjonsapplikasjonen ved å skrive inn koden den genererte for Electronic Arts-kontoen din og klikke på «Aktiver brukernavnsverifisering».

Når du trenger å bekrefte brukernavnet ditt i fremtiden:

1. Åpne identifikasjonsapplikasjonen.

2. Skriv inn den sekssifrede koden for Electronic Arts-kontoen din.

Den genererte koden er gyldig i en begrenset periode. Hvis den nåværende koden din allerede er i ferd med å utløpe, vent til appen genererer en ny kode slik at du har nok tid til å skrive den inn.

Hva bør jeg gjøre hvis jeg ikke kan bruke den? mobiltelefon eller e-post når jeg trenger en kode? Er det mulig å generere hjelpekoder?

Hvis telefonen din, ID eller e-post ikke er tilgjengelig for deg, den eneste måten Logg på EA-konto fra en ukjent datamaskin - bruk av assistansekoder. Sørg for å oppbevare dem på et sted som er trygt og tilgjengelig for deg. Du kan se og oppdatere disse kodene i EA-kontoen din under Personverninnstillinger i Origin-klienten eller online.

  • Klikk på "Sikkerhet", deretter "Vis" og "Hjelpekoder".*
  • Du kan også bruke funksjonen "Be om en ny kode etter å ha logget på FIFA Ultimate Team".

*Hvis du går tom for støttekoder, kan du generere nye på Kontoadministrasjon-siden.

Bekrefte kontaktinformasjon for å sikre at koden er riktig.

Hvis du har problemer med bekreftelseskoden for brukernavnet, må du sørge for at e-postadressen eller telefonnummeret er oppgitt riktig. Når du bruker en identifikator, sørg for at programmet er riktig installert.

  • Hvis du valgte å sende en kode til e-posten din da du aktiverte verifiseringen av brukernavnet, kan du sjekke og oppdatere e-postadressen din i delen Om meg på siden for kontoadministrasjon eller gjennom Origin-klienten.
  • Hvis du velger Identity App, kan du bruke en strekkode eller QR-kode for å skanne og søke etter koden mellom ?secret= og &.
  • Hvis du valgte alternativet for å sende en kode via SMS når du aktiverer verifiseringen av brukernavnet ditt, kan du sjekke og oppdatere telefonnummeret ditt i Sikkerhetsdelen av kontoadministrasjonssiden eller gjennom Origin-klienten.
  • Opprett eller bekreft et sikkerhetsspørsmål og svar.

Når du bekrefter kontaktinformasjonen din, vil du ha muligheten til å aktivere brukernavnsbekreftelse for å motta en ny kode.

Hvorfor fikk jeg dette skjemaet?

Det er for øyeblikket et brute-force-angrep på nettstedet ditt. Et brute-force-angrep er et passord-gjettingangrep. I dette tilfellet velges et passord for administrasjonspanelet på nettstedet ditt.

For å forhindre hacking av nettstedet ditt og øke sikkerheten, har vi installert ekstra beskyttelse.

Hvordan kan jeg nå få tilgang til nettstedets administrasjonspanel?

Nå, når du får tilgang til det administrative panelet på nettstedet ditt (på Joomla eller WordPress), vil et ekstra vindu for å angi pålogging og passord vises med inskripsjonen "vennligst bruk passordet til kontrollpanelet". Som innlogging må du skrive inn påloggingen til hostingtjenesten din, ser det ut som "u1234567". Passordet er det gjeldende passordet for vertstjenesten din.

Etter å ha bestått grunnleggende HTTP-autentisering, vil du se et standard påloggingsfelt i administrasjonspanelet på nettstedet ditt. Nå må du skrive inn administratorens innlogging og passord.

Hvordan grunnleggende HTTP-autentisering fungerer

Når du skriver inn påloggingspassordet i det grunnleggende autentiseringsvinduet, vil påloggingsverdien og passordhash vil bli sammenlignet med verdiene i en spesiell fil ~/etc/users, tilgjengelig i vertskontrollpanelet. Innholdet i filen ser omtrent slik ut: "u1234567:dm48bspxIO3rg". Der "u1234567" er påloggingen, og "dm48bspxIO3rg" er passordhash(merk: bare hashen, ikke selve passordet!). En passordhash er resultatet av å konvertere et passord ved hjelp av en bestemt algoritme.

Når du skriver inn login og passord i det grunnleggende autentiseringsvinduet, blir det angitte passordet hentet fra hasj og sammenligner med hash-verdien i filen ~/etc/users. Hvis verdiene samsvarer, er du autentisert.

Jeg kan ikke bestå grunnleggende autentisering

Du skriver sannsynligvis inn feil passord. Angi et nytt passord for grunnleggende autentisering:

Hvis du har bestått grunnleggende autentisering, men ikke kan logge inn direkte på administrasjonspanelet på Joomla- eller WordPress-siden din, bruk hjelpen:

Hvordan øke nettstedets beskyttelse mot brute-force-angrep?

Slik øker du nettstedets sikkerhet:

  • endre påloggingen for superbruker til en mer unik. Ikke bruk korte navn, det er bedre om du bruker fornavnet sammen med etternavnet. Det er mange ressurser på Internett hvor de mest populære påloggingene er samlet. Gjør deg kjent med dem og bruk dem aldri;
  • Angi et komplekst nettstedadministratorpassord. Kompleks passord må inneholde store og små bokstaver, tall og tilleggssymboler som "* - _ # :", osv. Passordlengden er ikke mindre enn 6 tegn. Helst 10 og oppover.

Hvordan fjerne HTTP Basic Authentication-skjemaet?

Slik fjerner du skjemaet for grunnleggende HTTP-autentisering:

AuthType Basic AuthName "vennligst bruk ditt kontrollpanelpassord" AuthUserFile .../users Krev gyldig bruker

For å kommentere en linje, sett inn et hash-symbol ("#") på begynnelsen av linjen, slik.

Vi trenger følgende sider:

  • Påmeldingsside med påmeldingsskjema
  • Kontoaktiveringsside
  • Side for passordgjenoppretting
  • Side for tilbakestilling av passord

Innloggingsskjemaet for nettstedet vil bli plassert på alle sidene på nettstedet (for eksempel i overskriften).

Dette er registreringssiden vi ønsker å få:

Her vil kontotypen avgjøre hvilken gruppe vi skal registrere brukeren i. I tillegg vil identifikasjonsfeltet (brukernavn) være e-post.

Legg til et tekstutdrag på siden Registrere:

[[!Registrere? &submitVar=`register-btn` &activationResourceId=`27` &activationEmailTpl=`Email.Activation` &activationEmailSubject=`Du er registrert på example.com` &placeholderPrefix=`reg.` &successMsg=`

Takk for din registrering. Til e-posten din [[!+reg.email]] En e-post har blitt sendt med en lenke for å aktivere kontoen din. Følg denne lenken for å fullføre registreringen.
` &usernameField=`e-post` &usergroupsField=`reg_type` &customValidators=`valueIn` &validate=`brukernavn:blank, reg_type:valueIn=^Readers;Writers;Idlers ^, fullname:required:minLength=^6^, passord:required:minLength =^6^, password_confirm:password_confirm=^password^, email:required:email` ]] [[!+error.message:default=`[[!$Register.Form]]`]]

Vær oppmerksom på at alle tagger knyttet til registrering er obligatoriske Nødvendigvis anrop ubufret. De samme reglene gjelder ved behandling av skjemaer med FormIt-kodebiten.

La oss se på anropsparametrene:

&submitVar=`register-btn`- spesifiserer navneattributtet til taggen input. Det vil si at kodebiten kun vil fungere dersom skjemaet sendes inn med en knapp med et bestemt navn.

&activationResourceId=`42`- ser fremover, er 42 identifikatoren til siden der vi skal aktivere brukeren.

&activationEmailTpl=`Email.Activation`- en del med et aktiveringsbrev, mer om det senere.

&placeholderPrefix=`reg.`- indikerer at alle plassholdere, med sjeldne unntak (mer om dette senere), som opprettes i denne kodebiten, må begynne med "reg."

&suksessMeld– en melding som vises ved vellykket innsending av skjemaet. Merk at den kan inneholde verdier fra skjemaet og andre tagger. Denne meldingen registrer deg for plassholder [[!+feil.melding]]. Ganske merkelig navn, og i dokumentasjonen for dette øyeblikket feil. Det står skrevet der [[!+reg.error.message]], men av komponentkoden følger det at dette ikke er tilfelle.

&usernameField=`e-post`- spesifiserer at e-postfeltet skal brukes som brukernavn.

&usergroupsField=`reg_type`- definerer et felt som spesifiserer gruppen som den nye brukeren skal legges til.

&customValidators=`valueIn`- spesifiserer ytterligere validatorer som må opprettes manuelt.

&validere– validatorer er spesifisert atskilt med komma for hvert felt, og hvis det kreves flere validatorer for ett felt, er de også atskilt med kolon. La oss se på dem separat:

brukernavn:blank– en enkel spamfelle, det betyr at brukernavnfeltet skal stå tomt.

reg_type:valueIn=^Readers;Writers;Idlers^– vi begrenser de mulige gruppene til de tre angitte. Det er ikke noe slikt i den første distribusjonen, og onde hackere kan registrere seg for eksempel under Administrator-gruppen (hvis du ikke har gitt den nytt navn).

fullt navn:required:minLength=^6^- feltet for fullt navn må ikke være tomt og inneholde minst 6 tegn.

passord:påkrevd:minLength=^6^- lignende for passordet.

password_confirm:password_confirm=^passord^- Passordene må være like.

email:required:email– e-posten må ikke være tom og være en faktisk post.

Design [[!+error.message:default=`[[!$Register.Form]]`]] viser en melding om vellykket innsending av skjemaet eller delen av skjemaet hvis du nettopp har besøkt siden eller fylt det ut feil.

La oss lage validatoren ovenfor verdiIn. For å gjøre dette, lag en kodebit med navnet verdiIn og følgende kode:

$verdiIn = eksplodere(";", $param); return in_array($verdi, $verdiIn);

Nå må du lage en del Registrer.skjema . I dette tilfellet vil det være som følger (Bootstrap 3 brukes):

[[!+reg.error.fullname:notempty=`
[[!+reg.error.fullname]]
`]]
[[!+reg.error.email:notempty=`
[[!+reg.error.email]]
`]]
[[!+reg.error.password:notempty=`
[[!+reg.error.password]]
`]]
[[!+reg.error.password_confirm:notempty=`
[[!+reg.error.password_confirm]]
`]]

Alle felt må fylles ut

I dette skjemaet vil jeg merke meg noen ting angående MODX:


– skjemaet behandles på samme side som det vises på.

Sette verdien fra de mottatt fra skjemaet slik at brukeren i tilfelle feil ikke trenger å legge inn alt på nytt.

[[!+reg.error.email:notempty=`[[!+reg.error.email]]`]]– igjen, i tilfelle feil, vil en feilmelding vises under feltet.

– sørg for å angi navnet på knappen hvis du tidligere har angitt egenskapen &send innVar.


Nå gjenstår det bare å lage en del E-post.Aktivering med brevet som nettstedet sender til brukeren:

Takk for din registrering! For å aktivere kontoen din, vennligst besøk følgende lenke:

Aktiver kontoen din på Example.Com

Etter aktivering vil du kunne logge på med e-post og passord:

Logg Inn:[[+e-post]]

Passord:[[+passord]]


Her kan du bruke plassholdere med skjemafeltnavn. Vær oppmerksom på at de er skrevet uten "reg." En plassholder er også lagt til [[+bekreftUrl]], der aktiveringslenken allerede er generert, trenger du ikke engang å gjøre noe.


Prikken over i-en til kunsten å registrere en ny konto ved hjelp av komponenten Logg Inn en aktiveringsside vil bli opprettet. Vi bruker en tom mal for denne siden, og i sideinnholdet trenger du bare å angi et tag-kall:

[[!Bekreft Registrer deg? &redirectTo=`1`]]

hvor 1 er identifikatoren til siden som brukeren vil bli omdirigert til hvis aktiveringen er vellykket. I dette tilfellet vil han allerede være pålogget.


La oss begynne å sette opp påloggingen til brukerprofilen. Autorisasjonsskjemaet vil være enkelt:

La oss legge det til ved å kalle det på rett sted:

[[!Logg Inn? &loginTpl=`Auth.Login` &logoutTpl=`Auth.Logout` &errTpl=`Auth.Login.Error` &actionKey=`action` &loginKey=`login` &redirectToPrior=`1` &logoutResourceId=`1`]]

Her spesifiserer vi en del med påloggingsskjemaet tegnet ovenfor ( &loginTpl=`Auth.Login`), en del med en kode vist til autoriserte brukere ( &logoutTpl=`Auth.Logout`), en liten del med utdata for påloggingsfeil ( &errTpl=`Auth.Login.Error`). Følgende er parameterne:

&actionKey=`handling` Og &loginKey=`pålogging`- hovedidentifikatorer for forespørselsbehandling. Den første betyr navnet på parameteren i POST-forespørselen, og den andre betyr verdien. Det vil si at skjemaet må sende verdien $_POST["action"]="login" slik at kodebiten Logg Inn behandlet det.

&redirectToPrior=`1`- betyr at vi etter innlogging flyttes til samme side som vi kom inn fra.

&logoutResourceId=`1`- når vi forlater profilen går vi til siden med ID 1.


Chunk Auth.Login :

[[!+feil]]

Skjemaet behandles på samme side. Hvis det oppstår en feil, vil den vises under skjemaet i plassholderen [[!+feil]]. Du må også huske lenker til ressurser med registrering og passordgjenoppretting. Vær oppmerksom på at i e-postfeltet navn = "brukernavn" - det er i dette feltet kodebiten dupliserte e-posten Registrere, og det er unikt for brukere.


Chunk Auth.Logout:

[]` &tpl=`User.HeaderBadge` &innerJoin=`("modUserGroupMember":("alias":"modUserGroupMember","on":"modUser.id = modUserGroupMember.member"), "modUserGroup":("alias" :"modUserGroup", "on":"modUserGroupMember.user_group = modUserGroup.id")` &select=`("modUserGroup":("group_name": "modUserGroup.name"))` ]]

Avslutt profil

Denne delen er ikke nødvendig hvis alle brukere er i samme gruppe. Men for å vise brukergruppen er ikke standardbitene som er inkludert i påloggingskomponenten nok. Du kan skrive en enkel tekstbit for å få navnet på gruppen på xPDO, eller du kan bruke en ferdig snutt pdoBrukere inkludert i pakken pdoTools. Parametere spesifisert i denne kodebiten:

&users=`[[+modx.user.id]]`- velg kun gjeldende autoriserte bruker.

&tpl=`User.HeaderBadge`- en del der vi vil vise kort informasjon om brukeren.

&innerBli med– JSON med sammenføyninger av brukergruppetabeller, beskrivelsen er utenfor artikkelens omfang. Hovedsaken er at det fungerer J.

&plukke ut– JSON som legger til feltet modUserGroup.name med aliaset gruppenavn til utvalget.


Del med brukermerke User.HeaderBadge :

Du er innlogget som [[+gruppenavn]][[+fullname]] Personlig konto

Hvis vi ikke trengte brukergruppen, kan innholdet i denne delen settes direkte inn i delen Auth.Logout . Her kan du vise plassholdere med alle modUser- og modUserProfile-felter pluss å bruke pdoBrukere felt lagt til gruppenavn.


I klumpen Auth.Login.Error enkel feilutgang:

[[+melding]]

Vi er ferdig med påloggingen. På dette tidspunktet kan brukeren registrere seg og logge på. Men hva om han har glemt passordet? I dette tilfellet klikker han på lenken "Glemt passordet ditt?" og går til siden for passordgjenoppretting, som vi først oppretter og ringer der:

[[!Glemt passord? &tpl=`Auth.ForgotPass.Form` &submitVar=`forgotpass` &errTpl=`Auth.Login.Error` &sentTpl=`Auth.ForgotPass.Sent` &emailTpl=`Email.ForgotPass` &emailSubject=`Gjenoppretter tilgangen til kontoen din på eksemplet nettsted. Com` &resetResourceId=`29`]]

La oss se på parametrene for denne samtalen:

&tpl=`Auth.ForgotPass.Form`- en del av skjemaet som brukeren vil skrive inn e-posten sin i.

&submitVar=`forgotpass`- når det gjelder ForgotPassword-kodebiten, er det nok at en parameter med samme navn sendes til serveren og uansett med hvilken ikke-tom verdi.

&errTpl=`Auth.Login.Error` - feilutgang som ligner på påloggingskodebiten

&sentTpl=`Auth.ForgotPass.Sent`- denne delen inneholder innholdet som vil vises hvis e-posten for å endre passordet sendes.

&emailTpl=`Email.ForgotPass`- selve brevet finnes her.

&e-post Emne=`Gjenopprette tilgangen til kontoen din på Eksempel.Com-nettstedet` - tittelen på brevet.

&resetResourceId=`29`- identifikator for ressursen som passordet vil bli tilbakestilt til et nytt.


Klump Auth.ForgotPass.Form:

[[+loginfp.errors]]

Det eneste nye her er en annen måte å vise feil i plassholderen på [[+loginfp.errors]] og sender parameteren som dette bestemte skjemaet tilbakestiller passordet: .

Auth.ForgotPass.Sent:

Kontogjenopprettingsinformasjon er sendt til den angitte e-postadressen: [[+e-post]].

Du kan bruke dataene fra skjemaet ovenfor her.


Email.ForgotPass:

[[+fullt navn]],

For å aktivere ditt nye passord, vennligst besøk følgende lenke:

Jeg vil ha et nytt passord

Hvis alt gikk bra, vil du kunne logge på profilen din ved å bruke følgende data:

Logg Inn:[[+brukernavn]]

Passord:[[+passord]]

Takk skal du ha,
Administrasjon av nettstedet Eksempel.Com

Alt er veldig likt aktiveringsbokstavdelen, bare passordet her genereres i kodebiten.


Det siste trinnet er å opprette en ressurs som brukeren vil gå til fra e-posten for å oppdatere passordet. I denne ressursen trenger vi en samtale:

[[!ResetPassword:empty=`

Du bestilte ikke tilbakestilling av passord. Kanskje du har feil adresse. Du kan gå til hovedsiden til nettstedet eller bruke menyen ovenfor.

`? &tpl=`Auth.ForgotPass.Reset`]]

Denne koden vil vise en melding hvis noen plutselig besøker denne siden igjen eller bare ved et uhell. Og hvis passordet er tilbakestilt, vil en melding vises fra delen Auth.ForgotPass.Reset:

Passordet ditt har blitt tilbakestilt til det som er spesifisert i e-posten. Du kan nå logge på med dette passordet. Ikke glem å endre det i profilen din.

Nå har vi et fullt fungerende brukerautorisasjons- og registreringssystem. Endring av profilen til autoriserte brukere vil ligge utenfor rammen av denne artikkelen.


1. Opprett en registreringsside og legg til en kodebit på den Registrere.

2. Lag biter med registreringsskjemaet Registrer.skjema og aktiveringsbrev E-post.Aktivering.

3. Opprett en registreringsbekreftelsesside og legg inn et utdrag på den Bekreft Registrer deg.

4. Legg til en kodebit Logg Inn hvor vi ønsker å plassere påloggingsskjemaet og det autoriserte brukermerket.

5. Lag en del med påloggingsskjemaet Auth.Login , stykke med informasjon om den autoriserte brukeren Auth.Logout , del med feilmelding Auth.Login.Error .

6. Opprett en side for gjenoppretting av passord og legg inn en kodebit på den Glemt passord.

7. Lag en del Auth.ForgotPass.Form med passordgjenopprettingsskjema, chunk Auth.ForgotPass.Sendt med en melding om vellykket sending av brevet, chunk Email.ForgotPass med en e-post for tilbakestilling av passord.

8. Opprett en ressurs med en siste tilbakestilling av passord og legg inn et snippet-kall i den Tilbakestille passord.

9. Lag en del Auth.ForgotPass.Reset med en melding som indikerer at passordet ble tilbakestilt.

Det er alt. Jeg vil være glad for eventuelle tillegg og kommentarer.

Når du bygger webapplikasjoner er det viktig å ta sikkerhet på alvor, spesielt når du skal forholde deg til innhenting av data fra brukere.

En generell sikkerhetsregel er å stole på ingen, så du kan ikke stole på at brukere alltid legger inn de riktige verdiene i skjemaer. For eksempel, i stedet for å skrive inn riktig e-postadresse i feltet, kan brukeren skrive inn en feil adresse, eller til og med noen ondsinnede data.

Når det gjelder validering av brukerdata, kan det gjøres enten på klientsiden (i nettleseren) eller på serversiden.

Tidligere kunne validering på klientsiden bare gjøres med JavaScript. Men alt har endret seg (eller nesten endret), siden ved hjelp av HTML5 kan validering gjøres i nettleseren, uten å måtte skrive komplekse valideringsskript i JavaScript.

Skjemavalidering ved hjelp av HTML5

HTML5 gir en ganske robust mekanisme basert på følgende tag-attributter : type, mønster og krever. Med disse nye attributtene kan du laste ned noen av datavalideringsfunksjonene til nettleseren.

La oss se på disse attributtene for å forstå hvordan de kan hjelpe med skjemavalidering.

type attributt

Dette attributtet forteller hvilket inndatafelt som skal vises for databehandling, for eksempel det kjente feltet som

Noen inndatafelt har allerede standard valideringsmetoder, uten behov for å skrive tilleggskode. For eksempel, sjekker feltet for å sikre at den angitte verdien samsvarer med malen til en gyldig e-postadresse. Hvis feil tegn legges inn i et felt, kan ikke skjemaet sendes inn før verdien er rettet.

Prøv å leke deg med e-postfeltverdiene i demoen nedenfor.

Det finnes også andre standard felttyper, som , Og for å validere henholdsvis numre, URL-er og telefonnumre.

Merk: Telefonnummerformater varierer fra land til land på grunn av forskjeller i antall sifre i telefonnumre og forskjeller i formater. Som et resultat definerer ikke spesifikasjonen en algoritme for å sjekke telefonnumre, så i skrivende stund er denne funksjonen dårlig støttet av nettlesere.

Heldigvis for oss kan telefonnummervalidering gjøres ved å bruke mønsterattributtet, som tar et regulært uttrykk som argument, som vi skal se på neste gang.

mønsterattributt

Mønsterattributtet vil sannsynligvis få mange frontend-utviklere til å hoppe av glede. Dette attributtet godtar et regulært uttrykk (ligner JavaScript-regulære uttrykksformat) som vil bli brukt til å kontrollere riktigheten av dataene som er angitt i feltet.

Regulære uttrykk er et språk som brukes til å analysere og manipulere tekst. De brukes ofte til komplekse søk og erstatningsoperasjoner, samt for å kontrollere riktigheten av innlagte data.

I dag er regulære uttrykk inkludert i de fleste populære programmeringsspråk, så vel som i mange skriptspråk, redaktører, applikasjoner, databaser og kommandolinjeverktøy.

Regulære uttrykk (RegEX) er et kraftig, kortfattet og fleksibelt verktøy for å matche en tekststreng, for eksempel individuelle tegn, ord eller tegnmønstre.

Ved å sende et regulært uttrykk som verdien av mønsterattributtet, kan du spesifisere hvilke verdier som er akseptable for et gitt inndatafelt, samt informere brukeren om feil.

La oss se på et par eksempler på bruk av regulære uttrykk for å validere verdien av inndatafelt.

Telefonnummer

Som nevnt tidligere støttes ikke tel-felttypen fullt ut av nettlesere på grunn av inkonsekvenser i telefonnummerformater i forskjellige land.

For eksempel, i noen land er formatet for telefonnumre representert som xxxx-xxx-xxxx , og selve telefonnummeret vil være omtrent slik: 0803-555-8205 .

Det regulære uttrykket som dette mønsteret samsvarer med er: ^\d(4)-\d(3)-\d(4)$ . I kode kan dette skrives slik:

Alfanumeriske verdier

nødvendig attributt

Dette er et boolsk attributt som brukes for å indikere at verdien av et gitt felt må fylles ut for å sende inn skjemaet. Når du legger til dette attributtet i et felt, vil nettleseren kreve at brukeren fyller ut dette feltet før skjemaet sendes inn.

Dette sparer oss for å implementere feltvalidering ved hjelp av JavaScript, noe som kan spare utviklere for litt tid.

For eksempel: eller (for XHTML-kompatibilitet)

Alle demoene du har sett ovenfor bruker det nødvendige attributtet, så du kan prøve det ved å prøve å sende inn skjemaet uten å fylle ut noen felt.

Konklusjon

Nettleserstøtte for skjemavalidering er ganske bra, og for eldre nettlesere kan du bruke polyfills.

Det er verdt å merke seg at det å stole på validering på nettlesersiden alene er farlig, siden disse sjekkene lett kan omgås av angripere eller roboter.

Ikke alle nettlesere støtter HTML5, og ikke alle data som sendes til skriptet ditt kommer fra skjemaet ditt. Dette betyr at før du endelig godtar data fra brukeren, er det nødvendig å kontrollere riktigheten på serversiden.

«Fool protection» er et sett med tiltak for å hindre innføring av uriktige opplysninger i et skjema. For eksempel, hvis et felt krever inntasting av et positivt tall fra 0 til 10, bør du sjekke at brukeren ikke skriver inn tekst eller et tall som ikke ligger i det angitte området, dvs. tallet skal ikke være mindre enn null og mer enn ti.

Hvorfor legges det inn feil informasjon? Dette gjøres hovedsakelig av tre grunner.

  1. Brukeren gjorde en feil ved et uhell, for eksempel leste han uoppmerksomt det han ble pålagt å angi.
  2. Nettsiden ber om data på en tvetydig måte, og lar brukeren gjette og gjette hva de egentlig vil ha. Men meningene til utvikleren og brukeren er ikke alltid sammenfallende.
  3. Det er en del mennesker som oppfatter instruksjoner som en utfordring og prøver å gjøre det motsatte. Slike brukere resonnerer omtrent slik: "Ja, de ber meg om å skrive inn et tall. Hva vil skje hvis jeg angir bokstavene?» Så spør de åpenbart feil informasjon og ser hva det fører til.

Det skal forstås at presis og korrekt formulering, selv om den reduserer sannsynligheten for feil, ikke på noen måte redder deg fra dem. Kun tekniske midler på serversiden lar deg oppnå ønsket resultat og unngå å legge inn feil informasjon. Imidlertid lar revisjon eller, som det også kalles, validering på klientsiden deg raskt sjekke dataene som er lagt inn av brukeren for korrekthet, uten å sende skjemaet til serveren. Dette sparer brukertid og reduserer belastningen på serveren. Fra et brukervennlighetssynspunkt er det også fordeler - brukeren mottar umiddelbart en melding om hvilken informasjon han har skrevet inn feil og kan rette opp feilen.

Obligatorisk felt

Noen skjemafelt må fylles ut før de sendes til serveren. Dette gjelder for eksempel registreringsskjemaet, hvor du må oppgi pålogging og passord. For å spesifisere obligatoriske felt, bruk det obligatoriske attributtet, som vist i eksempel 1.

Eksempel 1. Det påkrevde attributtet

HTML5 IE 10+ Cr Op Sa Fx

Obligatorisk felt

Logg Inn:

Passord:

Obligatoriske felter må fylles ut før innsending av skjemaet, ellers sendes ikke skjemaet til serveren og nettleseren vil gi en advarsel om dette. Meldingstypen avhenger av nettleseren, for eksempel viser Chrome et verktøytips som vist i fig. 1.

Ris. 1. Obligatorisk felt er ikke fylt ut

Datariktighet

I utgangspunktet er det to felt der brukerinndata sjekkes automatisk. Dette er en nettadresse og en e-postadresse. Chrome sjekker også kalenderfeltet for gyldighet, men bare fordi det ikke har et klikk-til-kalender-grensesnitt. Følgende regler gjelder for disse elementene.

  • Nettadresse ( ) må inneholde protokollen (http://, https://, ftp://).
  • Epostadresse ( ) må inneholde bokstaver eller tall før @-symbolet, etter det, deretter et punktum og et førstenivådomene.

Nettlesere har litt forskjellige retningslinjer for verifisering av brukerdata. Opera setter for eksempel automatisk inn http://-protokollen foran den angitte teksten, mens andre nettlesere venter på den fra brukeren. Chrome og Opera krever et punktum i e-postadressen; Firefox krever det ikke.

Eksempel 2 viser et skjema med obligatoriske felt der to felt er validert av nettleseren.

Eksempel 2: Datakorrekthet

HTML5 IE 10+ Cr Op Sa Fx

Datariktighet

Fyll ut skjemaet (alle felt er obligatoriske)

Navn:

E-post:

Nettsted:

Opera sjekker bare et skjemaelement hvis det har et navneattributt.

Hva som skjer i Opera når du legger inn feil data er vist i fig. 2.

Ris. 2. Advarsel om feil data

Inndatamal

Noen data kan ikke klassifiseres i en av skjemaelementtypene, så du må bruke et tekstfelt for det. Samtidig legges de inn etter en viss standard. Dermed inneholder en IP-adresse fire tall atskilt med en prikk (192.168.0.1), postnummeret til Russland er begrenset til seks sifre (124007), et telefonnummer inneholder et retningsnummer og et spesifikt antall sifre, ofte atskilt med en bindestrek (391 555-341-42), etc. Nettleseren må spesifisere en inndatamal slik at den sjekker dataene som er lagt inn av brukeren i henhold til den. For å gjøre dette brukes mønsterattributtet, og verdien er et regulært uttrykk. Noen typiske verdier er oppført i tabellen. 1.

Eksempel 3 ber deg angi en heksadesimal fargeverdi (#ffcc00), og hvis den ikke er innenfor dette området, viser nettleseren en feilmelding.

Eksempel 3. Inndatamal

HTML5 IE 10+ Cr Op Sa Fx

Fargeinngang

Skriv inn den heksadesimale fargeverdien (må starte med #)

I fig. Figur 3 viser en advarsel i Chrome-nettleseren.

Ris. 3. De angitte dataene samsvarer ikke med malen

Uvalidering

Validering er ikke alltid nødvendig for et skjema; for eksempel vil en utvikler ønske å bruke en universell JavaScript-løsning og trenger ikke lenger en duplikatsjekk av nettleseren. I slike tilfeller må du deaktivere innebygd validering. For å gjøre dette, bruk novalidate-attributtet til taggen

. Eksempel 4 viser bruken av dette attributtet.

Eksempel 4: Uvalidering

HTML5 IE 10+ Cr Op Sa Fx

novalidate-attributt

For et lignende formål brukes formnovalidate-attributtet, som legges til knappen for å sende inn skjemaet, i dette tilfellet til taggen . I dette tilfellet vil skjemaet fra eksempel 4 se slik ut.