Delar av webbplatsen
Redaktörens val:
- Hur man minskar storleken på en pdf, detaljerade instruktioner
- Är det möjligt att byta batteri i iPhone 4?
- De bästa programmen för att defragmentera din hårddisk på Windows
- Välja mottagare och akustik (budget hi-fi) Golvstående och bokhylla
- Kylare fungerar inte på laptop
- Ställa in ett lösenord för en sida Hur man skyddar en php-sida med ett lösenord
- Grannskap i calpe spanien
- Hur man laddar en bärbar dator ordentligt för att förlänga batteritiden Hur man laddar en bärbar dators batteri för första gången
- Skyrim - guide till att förbättra grafik (UPD) Grundläggande grafiska inställningar för Skyrim
- Hur man adopterar ett barn i Skyrim – Barn för adoption Ladda ner mod för Skyrim förbättrade barn
Reklam
Vi sätter ett lösenord på sidan. Ställa in ett lösenord för en sida Hur man skyddar en php-sida med ett lösenord |
Lösenord är det huvudsakliga medlet för att skydda information och används överallt på en dator – från att logga in på ett konto till att auktorisera på sidor på sociala nätverk. En aktiv användare har så många olika säkerhetsnycklar att det är omöjligt att behålla alla i minnet. Det är här funktionen att spara lösenord i webbläsarinställningarna kommer till undsättning. Det fungerar så här: Nästa gång du öppnar den här sidan behöver du inte ange någonting; även om du loggar ut från ditt konto kommer alla rader i behörighetsformuläret att fyllas i. Men här avslöjas en allvarlig nackdel - låt oss ta reda på hur man ser ett lösenord som är dolt med asterisker, och om det är möjligt att göra detta alls. Så du går till webbplatsen och ser lösenordet under asteriskerna. Det verkar som en bekväm sak - du klickar på "Logga in" och du behöver inte ange något annat, och andra användare ser inte ditt lösenord. Ett lösenord täckt med asterisker är ett enkelt mål för hackning. Kolla in det på din dator. Som ett exempel använder vi webbläsaren Google Chrome: På samma sätt kan du se åtkomstnycklar till konton i andra webbläsare - Mozilla Firefox, Opera, Internet Explorer. Låt oss se hur detta görs i Mozilla för att fästa material: ![]() Förresten, det är inte nödvändigt att ändra värdet tillbaka till "lösenord". Om du stänger sidan och sedan återvänder till den igen ser du att stjärnorna har kommit tillbaka. Men nu vet du vilka opålitliga beskyddare av personuppgifter de är. WebbläsarinställningarOm du tror att detta är slutet på exponeringen av stjärnorna, har du djupt fel. Alla webbläsare har ett ännu bekvämare sätt att se lösenordet som du sparade när du först loggade in på sidan. Den här gången, låt oss ta Opera-webbläsaren som ett exempel: ![]() Ett fönster kommer att visas med många webbadresser och data från olika konton. Vid första anblicken är allt bra: inloggningar, naturligtvis, visas, men istället för lösenord finns det asterisker som är bekanta för oss. Men om du klickar på en rad kommer du att se en Visa-knapp visas bredvid stjärnorna. Ett klick och du ser säkerhetsnyckeln för sajten. Du kan avslöja alla lösenord, ta en skärmdump och du kommer inte ens att inse att dina lösenordsskyddade sidor nu är i fara. Inte bara Opera, utan även andra webbläsare delar sådan information. I Google Chrome, till exempel, kan en sådan skylt kallas på följande sätt: ![]() I Mozilla Firefox öppnas en tabell med alla sparade åtkomstnycklar i avsnittet "Säkerhet" i inställningarna. I andra webbläsare är situationen liknande - all data som du accepterar att lagras måste vara allmänt tillgänglig. Använda speciell programvaraMen inte bara webbläsare lagrar data om användare, som användaren vänligen tillhandahåller och lagrar. Alla program som kräver att du anger ett lösenord och inloggning erbjuder också att komma ihåg denna data för att inte ange den varje gång du startar den. Följaktligen finns det speciella verktyg som låter dig se dessa sparade data. Sådana verktyg fungerar på samma princip, så låt oss ta Password Cracker-programmet som ett exempel. Den distribueras gratis och väger löjliga 45 KB. ![]() På raden "Lösenord" i verktygsfönstret för lösenordsknäckare kommer den sparade säkerhetsnyckeln att visas i alfanumerisk visning. SlutsatsSom du kan se nu är det inte svårt att ta reda på lösenordet som är gömt i webbläsaren, dolt med asterisker. Allt du behöver är tillgång till en dator och ett par minuters tid så att uppgifterna från dina konton hamnar i händerna på obehöriga. Naturligtvis riskerar du i det här fallet att glömma ditt lösenord och inte komma in i den önskade profilen. Detta är dock inte skrämmande: vi har redan skrivit om hur du återställer ditt Gmail-lösenord, hur du tar reda på ditt Wi-Fi-lösenord, hur du återfår åtkomst till ditt konto i WarFace-spelet, etc. Om du kan logga in i brevlådan som kontot är registrerat till, eller har kopplat ett telefonnummer till din profil, kan du vid behov enkelt återställa ett glömt lösenord. Men vad ska man göra med de säkerhetsnycklarna som du redan har sparat i webbläsarinställningarna? Rätt svar är att radera. När du tittade på lösenord genom inställningar borde du ha sett att funktionen för att spara koder kan inaktiveras. Rensa tabeller med lagrade nycklar, ta bort alla rader och avaktivera sedan själva funktionen. Det finns inga liknande artiklar. Så vår uppgift är att ställa in ett lösenord för att komma åt en viss sida. Låt oss börja med den mest primitiva metoden, så att säga, för skydd - några rader i JavaScript: Var pass = prompt("Ange lösenordet:", ""); if (pass == null) window.location = "wrong.html"; else if (pass.toLowerCase() == "wwvsfc") window.location = "temp.html"; else window.location = "wrong.html"; Knep som att dölja ett skript i en separat fil med hjälp av en konstruktion förändrar ingenting i grunden. Ett liknande system implementerat i Java: Importera java.applet.*; importera java.awt.*; importera java.net.*; public class Password extends Applet( TextField login, password; String Login = "login"; String Password = "Password"; public Password() ( ) public void init() ( Panel panel = new Panel(); panel.setLayout(new GridLayout(2,2)); login = new TextField(20)); new Button("Ok")); public boolean action(Event evt, Object obj) ( if(evt.target instansof Button) (String s; if(login.getText().equals(Login) && password.getText() .equals(Lösenord)) ( s = "http://www.hackzone.ru/articles/ok.html" ; ) else ( s = "http://www.hackzone.ru/articles/bad.html"; ) försök ( getAppletContext().showDocument(ny(a) URL(er)); ) catch(Undantag e) ( password.setText (e.toString()); return true; return false) Genom att inkludera denna applet på en sida kan du få något i stil med detta (alla efterföljande exempel använder ok.html och bad.html):
Det kan göras smartare, skapa en separat sida för varje användare, tvinga den att läsa data från en fil osv. Den grundläggande nackdelen är att när en person väl har landat på sidan han letar efter kan ingen hindra honom från att komma ihåg denna URL, så detta är ett engångsverktyg. Naturligtvis kan du gömma sidan inuti en ram så att URL:en inte visas i adressfältet, men du förstår vem detta skydd kommer från. Återigen går appleten helt till kunden och är i princip helt tillgänglig för forskning. Lösningen baserad på användningen av CGI har inte den sista nackdelen. Ett enkelt Perl-skript ser ut ungefär så här: #!/usr/bin/perluse CGI qw(:standard); $query = new CGI;$ok = "ok.html";$address = "bad.html"; $login = "login";$password = "lösenord"; $l = $query->param("login"); $p = $query->param("lösenord"); if(($p eq $password) && ($l eq $login))( $address = $ok;)print $query->redirect($address); Användningsexempel:
För att hantera den första nackdelen kan du dynamiskt generera en ny sida baserad på den som är gömd någonstans inuti, utan att ge ut URL:en. Ändrad kod: #!/usr/bin/perluse CGI qw(:standard); $query = ny CGI; $ok = "ok.html"; $address = "bad.html"; $docroot = $ENV("DOCUMENT_ROOT"); $localpath = "/artiklar/"; $login = "login";$password = "lösenord"; $l = $query->param("login"); $p = $query->param("lösenord"); if(($p eq $password) && ($l eq $login))( $address = $ok;) skriv ut $query->header(); open(FL, $docroot.$localpath.$adress); while())(# Här kan du samtidigt ändra html-koden i farten# Varför? Tja, man vet aldrig... :) print $_;) close (FL); Användningsexempel:
Som du kan se visas inte längre filens URL, om än på bekostnad av SSI (dock kan de bara fångas upp under utmatning och bearbetas manuellt, men även här kvarstår den teoretiska möjligheten att gissa URL, och). vi får inte glömma att alla möjliga bilder som ingår kan göra sidorna en otjänst - när man använder relativa vägar, förstås. Slutligen, det mest pålitliga sättet att ställa in ett åtkomstlösenord är att använda serververktyg - det är inte för inte som folk gjorde dem, trots allt. Jag kommer att fokusera på två - Apache som den mest populära och IIS som också populär :) Med IIS är allt ganska enkelt - skyddet utförs med NTFS, vilket naturligtvis begränsar kapaciteten för icke-serveradministratörer något. Tanken är följande: användaren IUSR_xxxx, under vars konto alla besökare på sajten arbetar som standard, nekas åtkomst till önskad fil/katalog. Därefter kommer endast de användare för vilka detta uttryckligen anges i Egenskaper->Säkerhet att ha tillgång till dessa filer. Det är tydligt att det är mycket bekvämare att kombinera dem i grupper. Det finns ett par subtiliteter här. För det första måste de angivna användarna ges inloggningsrättigheten lokalt (Policyer->Användarrättigheter i Användarhanteraren. För det andra, om du inte väljer WWW-tjänsten Grundläggande autentisering (Rensa text) i WWW-inställningarna, kommer endast Internet Explorer-användare att vara det. släpps in. I Apache görs allt lite annorlunda. Skydd är inställt på katalognivå. Motsvarande direktiv kan placeras både i den allmänna php.ini-konfigurationsfilen och i .htaccess-filerna. Uppsättningen av direktiv är i båda fallen densamma, och för de flesta som hyr utrymme för en webbplats/sida på någon annans server är det första alternativet inte tillgängligt. Så du skapar en .htaccess-fil i katalogen som du planerar att begränsa åtkomst till och infogar sedan följande direktiv i den: AuthType typ av kontroll– Basic brukar användas. AuthName namn- anger namnet på området där användarnamn och lösenord är giltiga. Detta är samma namn som webbläsaren visar i lösenordsdialogrutan. Genom att ställa in ett sådant namn för olika kataloger kan du spara användarna tiden för att ange ett extra lösenord. AuthGroupFile namn- anger namnet på filen där namnen på grupper och deras medlemmar är lagrade. Dess format: AuthUserFile namn- anger namnet på filen med lösenord. För att generera det måste du i stort sett använda verktyget htpasswd från Apache-distributionen. Men åtminstone för vissa versioner av servern är detta format: Passwordhash kan enkelt erhållas med den vanliga Perl-funktionen: Så det är fullt möjligt att automatisera processen att lägga till nya användare, ändra lösenord via html-formulär, etc. kräver användare användare1 användare2 och kräver grupp användare1 användare2 låter dig ange vilka användare och grupper som ska ha tillgång till en given katalog. kräver giltig-användare ger åtkomst till alla användare som anges i systemlösenordsfilen. ... , där metod i definierar en HTTP-metod. Till exempel begränsar det användningen av kapslade icke-direktiv till fall av användning av GET- och POST-metoderna (vanligtvis är detta mer än tillräckligt med kapslade direktiv kan kräva, beställa, tillåta och neka). Ett annat par användbara direktiv är neka och tillåta - neka respektive tillåta åtkomst. De används ungefär så här: Som standard exekveras alla avslag först, sedan tillåts alla, så tillåt från alla ger åtkomst till alla användare, oavsett eventuella avslag. Ordningen kan ändras med orderdirektivet: order tillåter, neka . deny from all går bra med den andra metoden att skydda sidor via CGI, det är detta direktiv som är bäst för att täcka alla slags lösenord för gästböcker, etc. När användaren försöker komma åt sidor från denna katalog kommer användaren att få ett meddelande om en icke-existerande sida. Förresten, här i förbigående demonstreras oberoende felhantering: i detta fall kod 403, Förbjudet. De älskade 404 - Not Found och 401 - Unauthorized behandlas på liknande sätt. För att göra detta, lägg bara till ErrorDocument-direktivet till .htaccess URL-kod: Allt skriptet gör är att generera ett felmeddelande med hjälp av miljövariabeln REQUEST_URI, så du kan bara peka på någon lämplig sida istället. För det sista exemplet använder vi en .htaccess-fil med följande innehåll: AuthType BasicAuthName TestAuthGroupFile /my/local/path/tgroupAuthUserFile /my/local/path/tuserrequire group test Det finns bara en rad i tgroup-filen - test: inloggningstest, i användarfilen - krypterade lösenord för inloggning (lösenord) och test (test). Observera att när du går in på den här sidan igen förstår webbläsaren att den just har nått det här området och stör inte användaren med en onödig begäran om lösenord. Detta är i korthet den minsta mängd information som krävs för att skydda webbsidor. Som praxis visar bör du mer eller mindre bara lita på lösningar baserade på de verktyg som servern tillhandahåller (och sedan tills ett annat hål upptäcks i servern), så om möjligt är det bättre att välja dem. Enkla sätt att låsa en katalog eller filer med ett lösenord diskuteras. Hur man auktoriserar en användare genom cookies. Användaridentifiering genom sessionsmekanismen inbyggd i PHP4. Lösenord för sidan. Del 1. Ganska teoretiskt.Jag bestämde mig för att beskriva sätt att skydda en del av webbplatsen med ett lösenord. Ämnet är faktiskt ganska stort, så för första gången kommer jag att begränsa mig till php+mysql-auktorisering. Den allra första frågan som brukar dyka upp är hur man stänger katalogen med administrationsskript med ett lösenord. I det här fallet behövs inga krusiduller - en eller flera administratörer har samma rättigheter, och personligheter förändras sällan. Det enklaste sättet i den här situationen är att använda standardserverbehörighet - lägg .htaccess- och .htpasswd-filerna och skriv de nödvändiga parametrarna i dem. Jag ska lägga till två saker. Den första är var .htpasswd-filen ska placeras. Experimentellt fick jag reda på att om till exempel sökvägen till ett dokument med ett felmeddelande (ErrorDocument) skrivs i förhållande till systemvariabeln DocumentRoot. Men sökvägen till lösenordsfilen (UserFile) skrivs i förhållande till ServerRoot. Såvitt jag förstår kan du inte sätta .htpasswd ovanför ServerRoot - "../" uppfattas inte. Allt detta görs för att du ska kunna placera en fil med lösenord, till exempel en nivå ovanför webbplatsens rotkatalog, så att det inte finns någon tillgång till filen från nätverket alls. Det andra är att skriptet kan ta reda på vem som öppnar det och lösenordet: variablerna $PHP_AUTH_USER och $PHP_AUTH_PW. Den största nackdelen med denna metod är att servern inte kan blockera lösenordsgissning (efter flera misslyckade inloggningsförsök uppmanas användaren att vänta en timme eller två, och under denna tid ignoreras samtal från hans IP-adress). Detta är skrivet i den officiella Apache-dokumentationen. En annan nackdel är behovet av att skriva om filer med lösenord när du tar bort en användare eller introducerar en ny. Men om detta händer sällan är den här metoden ganska tillräcklig, och du behöver inte oroa dig för att skriva en auktoriseringsmekanism. Automatisering av auktorisationDetta är nödvändigt inte bara för att förenkla arbetet med ett stort antal användare och deras höga omsättning. Om du behöver behålla ytterligare information om användare, eller om du behöver flexibel differentiering av rättigheter, är det bättre att överföra behörighet till databasen. Varje sida i ett stängt område innehåller en fil med följande kod: $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=\"Användarområde\""); header("HTTP/1.0 401 Unauthorized"); print("För att logga in på användarområde del av webbplatsen, måste du ange ditt användarnamn och lösenord."); exit(); ); $user_row = mysql_fetch_array($result); På den första raden tas alla tecken utom bokstäver, siffror, bindestreck och understreck bort från inloggningen. Antalet rader som tas emot kontrolleras sedan och endast om det är en rad ges tillgång. I andra fall kommer användaren att se ett fönster i webbläsaren som uppmanar dig att ange inloggning och lösenord. Om användaren loggade in framgångsrikt har vi all information om honom i arrayen $user_row. Naturligtvis har exemplet jag gav ett antal betydande brister. Skriv inte om det en-till-en för att inte bli offer för lösenordsgissningsförsök, eftersom Och den sista metoden för idag är att lagra krypterad data i cookies. Det finns ett skript för att logga in, resten innehåller kod som bara låter dig fortsätta handlingar i ett stängt område - om cookies upphör eller om han loggar ut därifrån måste du gå tillbaka till inloggningssidan. Inmatningsskriptet kontrollerar inloggning och lösenord och utfärdar två cookies. I den första - inloggningen, för att omedelbart identifiera användaren (i databasen är inloggningsfältet naturligtvis unikt eller till och med nyckel). Den andra kakan innehåller en hash av inloggningstiden och lösenordet (för fullständig sekretess lägger jag till bokstaven "Y" på dessa rader - då är det nästan omöjligt att hitta hashen :). Alla andra program innehåller kod som gör följande. Gör en begäran till databasen - väljer raden med mottagen inloggning. Från den här raden tar den "log_time"-fältet och lösenordet och gör en hash från dem, som beskrivits ovan. Jämför det med vad det fick, och om de matchar, utfärdar en ny hash-cookie, igen, från lösenordet, tiden och bokstaven "Y" och gör en fråga till databasen "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 =mys_code");SELECT $lres. date_format(log_date,"%Y%m%d%H%i%s") som log_date1,pass,uid FROM user WHERE email="$login" AND log_date>"DATE_SUB(NU(),INTERVAL 15 MINUTE)"" ); if (!mysql_error() && @mysql_num_rows($result)==1) ( $log_time0 = time(); $log_time1 = date("YmdHis", $log_time0); $log_time2 = date("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("UPPDATERING user 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); Återigen finns det inget skydd här från val och attack på servern (förresten, här kan du skriva användarens IP-adress istället för bokstaven "Y" - så att till exempel en kontorsgranne inte kan ta en fil med en cookie och logga in från sin dator). Lösenord för sidan. Del 2. RekryteringsblockeringNär jag postade det här numret förra gången sparkade de mig på plats och sa att ett sådant block kunde spåra ur servern. Men först om rebound-blockering. Banaliteter, men ändå. Ett lösenord på tio tecken som består av latinska bokstäver och siffror betyder att det finns många alternativ. Om du gissar ett lösenord 1 000 000 gånger per sekund tar det flera tusen år. Men eftersom sådan gobbledygook är svår att komma ihåg, gör vi ofta lösenord av meningsfulla ord. För några år sedan visade det sig att de flesta lösenord går att gissa med hjälp av en ordbok på 10 000 ord. Vid ett tillfälle dök en mask (ett sådant virus) upp på nätverket, som klättrade på Unix-servrar, med hjälp av deras säkerhetshål och plockade upp lösenord för privilegierade användare med... Unix-systemets stavningsordbok. Det behövdes inte bära något! Varje användare, tills han har angett rätt inloggning och lösenord, anses vara en ond hackare. Vad gör vi när användaren anger något felaktigt?
|
Populär:
Ny
- Är det möjligt att byta batteri i iPhone 4?
- De bästa programmen för att defragmentera din hårddisk på Windows
- Välja mottagare och akustik (budget hi-fi) Golvstående och bokhylla
- Kylare fungerar inte på laptop
- Ställa in ett lösenord för en sida Hur man skyddar en php-sida med ett lösenord
- Grannskap i calpe spanien
- Hur man laddar en bärbar dator ordentligt för att förlänga batteritiden Hur man laddar en bärbar dators batteri för första gången
- Skyrim - guide till att förbättra grafik (UPD) Grundläggande grafiska inställningar för Skyrim
- Hur man adopterar ett barn i Skyrim – Barn för adoption Ladda ner mod för Skyrim förbättrade barn
- Lås upp Bootloader HTC