✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Sanering av webbadresser i WordPress

7

Att arbeta med användarcentrerade fält i WordPress – som inputelement, textareaelement eller vilken typ av fält som helst där en användare kan ange sina egna värden är en plats som alltid bör vara ett mål för sanering.

Lyckligtvis tillhandahåller WordPress API ett antal funktioner för att hjälpa till med detta. Beroende på ditt användningsfall kan du behöva göra något av följande:

Och de är alla bra men det finns också sätt på vilka du kan arbeta för att sanera data med hjälp av funktioner som tillhandahålls av PHP.

Visst, ibland är reguljära uttryck rätt väg att gå, men andra gånger kanske du vill använda faciliteter som är inbyggda i språket, lättare att förstå och lättare att följa.

När jag skriver min egen kod (och när jag granskar andra) försöker jag ha det i åtanke. Så med det sagt, här är en process som du kan använda som kan göra dina ansträngningar enklare när du arbetar med webbadresser i WordPress.

Om du inte är redo för hela diskussionen om detta kan du hoppa ner till rubriken längst ner i inlägget som beskriver koden och hur du använder den i ditt arbete.

Låt oss säga att du har ett öppet inputelement och du vill tillåta användaren att tillhandahålla en URL som så småningom kommer att renderas på front-end, kanske i en länk, i någon typ av schema, eller helt enkelt som den är.

Det är möjligt att vara riktigt aggressiv och helt enkelt göra något som "Om det här inte är en giltig URL, spara den inte."

Och, för att vara tydlig, jag säger inte att en giltig URL inte returnerar en 404 (för ibland finns sidor och flera år senare gör de det inte). Jag definierar en giltig webbadress som en som är korrekt formaterad och inte innehåller någon ovidkommande information.

Så säg, för detta enkla exempels skull, erbjuder du ett textfält som så småningom kommer att sparas i postmetadatatabellen. Vidare kommer du att ta bort allt som är olagligt i en URL och lämna bara det som skulle skapa en giltig URL.

För att göra det tycker jag att följande funktioner är mest användbara:

  • strip_tags. Ta bort HTML- och PHP-taggar från en sträng.
  • streckstreck. Av-citerar en sträng med citat.
  • filter_var. Filtrerar en variabel med ett specificerat filter.

Det senare låter lite förvirrande eftersom det bygger på tanken att du förstår vad filter faktiskt är. I PHP kan filter delas upp i två användningsfall:

  1. Godkännande
  2. Sanering

Och de är i huvudsak förbyggda sätt för oss att bearbeta data på ett sådant sätt som bearbetar data för att avgöra om det är den typ av information, vanligtvis en sträng eller en array, som vi letar efter.

Att sätta det i arbete

Med det i åtanke, så här kan du försöka spara information till databasen utan någon typ av sanering (vilket är en dålig sak):

Med koden ovan kan användaren bokstavligen skriva in vad som helst i fältet och få det sparat i databasen. Det är därför det är viktigt med sanering. Utan det kan användaren förstöra användarupplevelsen eller hela WordPress-installationen.

Så hur ser det ut att använda koden ovanifrån när du sanerar webbadresser? Generellt sett ser det ut så här :

Först körs koden genom ett PHP-filter som validerar en URL. Om strängen som skickas in i filterfunktionen inte ens fungerar som en URL, kommer funktionen att returnera false.

Om det å andra sidan fungerar som en giltig URL, kan vi ta bort alla snedstreck som inte behövs. Det betyder att vi kan "ta bort citat från alla strängar som citeras." Mer exakt kommer detta att ta bort det första snedstrecket i följd (eftersom, i PHP, används omvänt snedstreck för att undvika ett snedstreck). Klar? 🙂

Slutligen väljer vi att ta bort taggarna eftersom vi bara vill ha själva webbadressen. Vi vill inte ha några markeringar, taggar eller något som kan sabotera data som skrivs in i databasen. Detta betyder att om du väljer att köra något som:

Du kommer att sitta kvar med:

"https://tommcfarlin.com/alert('hello world!');"

Så sätt ihop all ovanstående kod med den här strängen:

Kommer att resultera i följande utdata:

https://tommcfarlin.com/alert('hello world!');

Detta är uppenbarligen inte en giltig URL men den är ren, säker och låter dig utföra allt annat arbete du kan behöva göra för att validera att webbadressen är säker för användaren.

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer