Αντιμετώπιση προβλημάτων

Γνώση Υπολογιστών >> Αντιμετώπιση προβλημάτων >  >> Οι κωδικοί πρόσβασης

Πώς δημιουργείτε μια σελίδα σύνδεσης με πεδία ονόματος χρήστη και κωδικού πρόσβασης;

Η δημιουργία μιας σελίδας σύνδεσης περιλαμβάνει τόσο το Front-end (HTML, CSS, JavaScript) για τη διεπαφή χρήστη όσο και το back-end (γλώσσα από την πλευρά του διακομιστή και τη βάση δεδομένων) για τον έλεγχο ταυτότητας και τη διαχείριση δεδομένων. Ακολουθεί μια κατανομή του τρόπου δημιουργίας μιας σελίδας σύνδεσης, καλύπτοντας τόσο το εμπρόσθιο και το απλοποιημένο παράδειγμα προσέγγισης back-end.

1. Front -end (δομή HTML - `login.html`)

`` html

Σύνδεση

Σύνδεση

`` `

Βασικά σημεία:

* `: Δηλώνει τον τύπο εγγράφου ως HTML5.

* `: Καθορίζει την κωδικοποίηση χαρακτήρων για το έγγραφο.

* `: Ρυθμίζει το παράθυρο προβολής για σχεδιασμό που ανταποκρίνεται.

* ``:</b> Ορίζει τον τίτλο που εμφανίζεται στην καρτέλα του προγράμματος περιήγησης. <p> * <b> ` <link rel ="stylesheet" href ="style.css"> `:</b> Σύνδεσμοι στο αρχείο CSS για στυλ. <p> * <b> `<div>`:</b> Ένα δοχείο Div για να κρατήσει τη φόρμα σύνδεσης και τα στοιχεία του, διευκολύνοντας το στυλ. <p> * <b> ` <H2> Σύνδεση </h2> `:</b> Μια επικεφαλίδα για τη φόρμα σύνδεσης. <p> * <b> <form id ="loginform" action ="/login" method ="post"> `:</b> Ο πυρήνας της φόρμας:<p> * `id =" loginform "`:Παρέχει ένα μοναδικό αναγνωριστικό για τη φόρμα, επιτρέποντάς σας να το χειριστείτε με JavaScript. <p> * `action ="/login "`:<b> Βασικά σημαντικό! </b> Αυτό καθορίζει τη διεύθυνση URL στον διακομιστή σας που θα χειριστεί το αίτημα σύνδεσης όταν υποβληθεί η φόρμα. Αντικαταστήστε το `/login` με την πραγματική διαδρομή στο τελικό σημείο σύνδεσης του διακομιστή σας. <p> * `method =" post "`:Υποδεικνύει ότι τα δεδομένα φόρμας θα σταλούν στον διακομιστή χρησιμοποιώντας τη μέθοδο post HTTP, η οποία είναι γενικά πιο ασφαλής για ευαίσθητα δεδομένα όπως κωδικούς πρόσβασης. <p> * <b> `<div>`:</b> Δοχεία για ετικέτες και πεδία εισόδου, βοηθώντας στο στυλ και την οργάνωση. <p> * <b> `<label for =" username ">` και `<input type =" text "id =" username "name =" username "απαιτείται>`:</b> <p> * `label`:Παρέχει μια ετικέτα κειμένου για το πεδίο εισόδου. Το χαρακτηριστικό `for` πρέπει να ταιριάζει με το 'id' του πεδίου εισόδου με το οποίο σχετίζεται. <p> * `Εισαγωγή Type =" Text "`:Δημιουργεί ένα πεδίο εισόδου κειμένου για το όνομα χρήστη. Το `name =" username "` είναι σημαντικό-ο κώδικας από την πλευρά του διακομιστή θα χρησιμοποιήσει αυτό το όνομα για να αποκτήσει πρόσβαση στην τιμή που εισάγεται από τον χρήστη. Το "Απαιτείται" καθιστά το πεδίο υποχρεωτικό. <p> * <b> `<input type =" password "id =" password "name =" password "απαιτείται>`:</b> Δημιουργεί ένα πεδίο εισόδου κωδικού πρόσβασης. Το χαρακτηριστικό `type =" password "` μάσκες την είσοδο ως τύπους χρήστη. Το `name =" κωδικός πρόσβασης "` χρησιμοποιείται από τον κωδικό από την πλευρά του διακομιστή. Το "Απαιτείται" καθιστά το πεδίο υποχρεωτικό. <p> * <b> `<Button Type =" Submit "> Σύνδεση </button> `:</b> Το κουμπί υποβολής που ενεργοποιεί την υποβολή της φόρμας. <p> * <b> <div> </div> `:</b> Ένα σύμβολο κράτησης θέσης για την εμφάνιση μηνυμάτων σφάλματος από το διακομιστή, εάν αποτύχει ο έλεγχος ταυτότητας. <p> * <b> <script src ="script.js"> </script> `:</b> Σύνδεσμοι στο αρχείο JavaScript για οποιαδήποτε επικύρωση από την πλευρά του πελάτη ή άλλες αλληλεπιδράσεις. <p> <p> <b> 2. Front -end (CSS styling - `style.css ') </b> <p> <p> `` `CSS <p> σώμα { <p> γραμματοσειρά-οικογένεια:sans-serif; <p> φόντο-χρώμα:#F4F4F4; <p> Εμφάνιση:Flex; <p> δικαιολογήστε το περιεχόμενο:κέντρο; <p> ευθυγράμμιση-στοιχείων:κέντρο; <p> Min-Upight:100VH; <p> } <p> <p> .Login-Container { <p> φόντο-χρώμα:#fff; <p> Επεξεργασία:20px; <p> Border-Radius:8px; <p> Box-Shadow:0 0 10px RGBA (0, 0, 0, 0.1). <p> Πλάτος:300px; <p> } <p> <p> .form-group { <p> Περιθώριο:15px; <p> } <p> <p> Ετικέτα { <p> Εμφάνιση:μπλοκ; <p> Περιθώριο:5px; <p> } <p> <p> είσοδος [Type ="Text"], <p> είσοδος [type ="password"] { <p> Πλάτος:100%. <p> Επεξεργασία:8px; <p> σύνορα:1px στερεό #ccc; <p> Border-Radius:4px; <p> μεγέθους κουτιού:Border-Box; / * Συμπεριλάβετε την επένδυση και τα σύνορα στο συνολικό πλάτος και το ύψος του στοιχείου */ <p> } <p> <p> κουμπί { <p> φόντο-χρώμα:#4CAF50; <p> Χρώμα:Λευκό; <p> Επεξεργασία:10px 15px; <p> σύνορα:κανένα; <p> Border-Radius:4px; <p> δρομέας:δείκτης; <p> Πλάτος:100%. <p> } <p> <p> Κουμπί:Τοποθετήστε το δείκτη { <p> φόντο-χρώμα:#3e8e41; <p> } <p> <p> .error-message { <p> Χρώμα:κόκκινο; <p> Περιθώριο:10px; <p> } <p> `` ` <p> <p> Αυτό το CSS παρέχει βασικό στυλ για να κεντράρετε τη φόρμα σύνδεσης, να στυλ τα πεδία εισόδου και το κουμπί και να δώσετε μια οπτική ένδειξη για μηνύματα σφάλματος. <p> <p> <b> 3. Front -end (JavaScript - `script.js` - Προαιρετική επικύρωση από την πλευρά του πελάτη) </b> <p> <p> `` `javascript <p> document.getElementById ('logInform'). <p> const username =document.getElementById ('username'). <p> const password =document.getElementById ('password'). <p> const errorMessageDiv =document.getElementById ('errorMessage'); <p> <p> errorMessagediv.TextContent =''; // Καθαρίστε προηγούμενα σφάλματα <p> <p> αν (! username ||! password) { <p> errorMessagediv.TextContent ='Παρακαλώ εισάγετε τόσο το όνομα χρήστη και τον κωδικό πρόσβασης. <p> event.PreventDefault (); // Αποτροπή υποβολής φόρμας <p> απόδοση; <p> } <p> <p> // Μπορείτε να προσθέσετε πιο πολύπλοκη επικύρωση πελάτη εδώ, όπως οι έλεγχοι δύναμης κωδικού πρόσβασης. <p> }); <p> <p> `` ` <p> <p> Αυτό το JavaScript προσθέτει μια επικύρωση από την πλευρά του πελάτη, ελέγξτε ότι τόσο τα πεδία χρήστη όσο και τα πεδία κωδικού πρόσβασης έχουν συμπληρωθεί πριν υποβάλετε τη φόρμα στο διακομιστή. Είναι προαιρετικό, αλλά βελτιώνει την εμπειρία του χρήστη παρέχοντας άμεση ανατροφοδότηση. <p> <p> <b> 4. Back -end (node.js με express - παράδειγμα) </b> <p> <p> Αυτό είναι ένα βασικό παράδειγμα χρησιμοποιώντας το Node.js και το Express Framework. Θα χρειαστεί να τα εγκαταστήσετε:<p> <p> `` `bash <p> NPM Εγκατάσταση Express Body-Parser Bcrypt <p> `` ` <p> <p> * <b> `express`:</b> Ένα πλαίσιο εφαρμογών ιστού για το Node.js. <p> * <b> `body-parser`:</b> Middleware για να αναλύσει τα σώματα αιτήματος. <p> * <b> `bcrypt`:</b> Βιβλιοθήκη για τους κωδικούς πρόσβασης με ασφάλεια. (Είναι σημαντικό για την ασφάλεια!) <p> <p> `` `javascript <p> const express =απαιτεί ('express'); <p> const bodyparser =απαιτεί ('body-parser'); <p> const bcrypt =απαιτεί ('bcrypt'); <p> const app =express (); <p> θύρα Const =3000; <p> <p> // Βάση δεδομένων χρήστη in-memory (αντικαταστήστε με μια πραγματική βάση δεδομένων όπως το MongoDB ή το PostgreSQL) <p> Const Users =[]; // array αντικειμένων χρήστη {username, passwordHash} <p> <p> app.use (bodyparser.urlencoded ({extended:false})); // PARSE URL-κωδικοποιημένα σώματα <p> app.use (bodyparser.json ()); // PARSE JSON BODIES <p> app.use (express.static ('public')); // Σερβίρετε στατικά αρχεία (HTML, CSS, JS) από τον κατάλογο «δημόσιου» <p> <p> app.get ('/', (req, res) => { <p> res.sendfile (__ dirname + '/public/login.html'); // Σερβίρετε τη σελίδα σύνδεσης <p> }); <p> <p> app.post ('/login', async (req, res) => { <p> const {username, password} =req.body; <p> <p> const user =users.find (u => u.username ===όνομα χρήστη); <p> <p> αν (χρήστης) { <p> // Συγκρίνετε τον παρεχόμενο κωδικό πρόσβασης με τον αποθηκευμένο κωδικό πρόσβασης <p> const passwordMatch =περιμένετε bcrypt.compare (κωδικός πρόσβασης, user.passwordHash); <p> <p> αν (passwordMatch) { <p> // Επέληξη ταυτότητας <p> res.send ('Σύνδεση επιτυχίας!'); // Σε μια πραγματική εφαρμογή, θα ανακατευθύνετε σε ένα ταμπλό ή θα ρυθμίσετε ένα cookie περιόδου σύνδεσης. <p> } αλλιώς { <p> // Μη έγκυρος κωδικός πρόσβασης <p> res.status (401) .SEND ('Μη έγκυρο όνομα χρήστη ή κωδικός πρόσβασης'); <p> } <p> } αλλιώς { <p> // Ο χρήστης δεν βρέθηκε <p> res.status (401) .SEND ('Μη έγκυρο όνομα χρήστη ή κωδικός πρόσβασης'); <p> } <p> }); <p> <p> <p> app.post ('/register', async (req, res) => { <p> const {username, password} =req.body; <p> <p> // Ελέγξτε εάν υπάρχει ήδη το όνομα χρήστη <p> αν (users.find (u => u.username ===όνομα χρήστη)) { <p> επιστροφή res.status (400) .Send ('username ήδη υπάρχει')? <p> } <p> <p> // κατακερματίστε τον κωδικό πρόσβασης <p> const saltrounds =10; // ή περισσότερο για ισχυρότερο κατακερματισμό <p> const passwordHash =περιμένετε bcrypt.hash (κωδικός πρόσβασης, saltrounds); <p> <p> // Αποθηκεύστε τον νέο χρήστη στη βάση δεδομένων <p> users.push ({username, passwordHash}); <p> <p> res.status (201) .send ('χρήστης που έχει καταχωρηθεί με επιτυχία'); <p> }); <p> <p> <p> app.listen (θύρα, () => { <p> console.log (`server Ακρόαση στο http:// localhost:$ {port}`); <p> }); <p> `` ` <p> <p> <b> Επεξήγηση του κώδικα back-end:</b> <p> <p> 1. <b> Εισαγωγές:</b> Εισάγει τις απαραίτητες ενότητες:`express ',` body-parser' και `bcrypt`. <p> 2. <b> Αρχικοποίηση:</b> Δημιουργεί μια ρητή εμφάνιση εφαρμογής (`App`) και ορίζει τη θύρα. <p> 3. <b> middleware:</b> <p> * `bodyparser.urlencoded ({extended:false})`:PARSES ORL-κωδικοποιημένα σώματα αίτησης (δεδομένα που αποστέλλονται από έντυπα HTML). `Extended:False` χρησιμοποιεί την ενσωματωμένη βιβλιοθήκη QueryString, ενώ το` Extended:True` χρησιμοποιεί τη βιβλιοθήκη `QS`, η οποία επιτρέπει πιο σύνθετες δομές αντικειμένων. <p> * `bodyparser.json ()`:PARSES JSON BAUGIES ΑΙΤΗΣΗΣ. <p> * `express.static ('public')`:εξυπηρετεί στατικά αρχεία (html, css, javascript) από τον κατάλογο `public`. Αυτό είναι όπου θα βάλετε το `login.html`,` style.css` και `script.js` αρχεία. <p> 4. <b> Διαδρομή για την εξυπηρέτηση της σελίδας σύνδεσης (`/`):</b> <p> * `app.get ('/', ...)`:Καθορίζει μια διαδρομή που χειρίζεται παίρνει αιτήματα στη διαδρομή ρίζας (`/`). <p> * `res.sendfile (__ dirname + '/public/login.html')`:στέλνει το αρχείο `login.html` στον πελάτη. `__dirname` είναι ο τρέχων κατάλογος του σεναρίου, εξασφαλίζοντας ότι η διαδρομή του αρχείου είναι σωστή. <p> 5. <b> Διαδρομή για τη διαχείριση της υποβολής σύνδεσης (`/login`):</b> <p> * `app.post ('/login', ...)`:Καθορίζει μια διαδρομή που χειρίζεται τα αιτήματα post στη διαδρομή `/login`. Αυτό είναι όπου αποστέλλονται τα δεδομένα φόρμας σύνδεσης. <p> * `req.body`:περιέχει τα δεδομένα που αποστέλλονται από τη φόρμα. Χάρη στο `body-parser`, μπορείτε να έχετε πρόσβαση στο όνομα χρήστη και τον κωδικό πρόσβασης χρησιμοποιώντας` req.body.username` και `req.body.password`. <p> * `users.find (u => u.username ===όνομα χρήστη)`:Αναζητά τον πίνακα `χρήστες για έναν χρήστη με το αντίστοιχο όνομα χρήστη. (Σε μια πραγματική εφαρμογή, θα ρωτήσατε τη βάση δεδομένων σας.) <p> * <b> Κωδικός πρόσβασης με `bcrypt`:</b> <p> * `bcrypt.compare (κωδικός πρόσβασης, user.passwordhash)`:Αυτό είναι το κρίσιμο μέρος για την ασφάλεια. Συγκρίνει τον κωδικό πρόσβασης που εισάγεται από τον χρήστη με το αποθηκευμένο * hash * του κωδικού πρόσβασης. `Bcrypt` χειρίζεται αυτόματα τη διαδικασία αλάτου. Αυτό είναι πολύ πιο ασφαλές από την αποθήκευση κωδικών πρόσβασης στο PlainText. <p> * <b> Λογική ελέγχου ταυτότητας:</b> <p> * Εάν βρεθεί ένας χρήστης και ο κωδικός πρόσβασης ταιριάζει, θα ορίσατε συνήθως ένα cookie περιόδου σύνδεσης για να πιστοποιήσετε τον χρήστη και να τα ανακατευθύνετε σε μια καταγεγραμμένη περιοχή. Σε αυτό το παράδειγμα, στέλνει απλώς μια "επιτυχημένη σύνδεση!" μήνυμα. <p> * Εάν ο χρήστης δεν βρεθεί ή ο κωδικός πρόσβασης δεν ταιριάζει, στέλνει μια απάντηση σφάλματος (`401 μη εξουσιοδοτημένη '). Το JavaScript Front-end μπορεί στη συνέχεια να εμφανίσει αυτό το μήνυμα σφάλματος στον χρήστη. <p> 6. <b> Διαδρομή για την εγγραφή </b> <p> * Προστέθηκε μια διαδρομή μητρώου για να επιτρέπεται η προσθήκη νέων χρηστών στο σύστημα <p> * Ο κωδικός πρόσβασης δεν αποθηκεύεται, αλλά έχει χασμουρητό για να εξασφαλίσει ασφάλεια <p> 7. <b> Ξεκινώντας τον διακομιστή:</b> <p> * `app.listen (θύρα, ...)`:Ξεκινά τον διακομιστή Express στην καθορισμένη θύρα. <p> <p> <b> Σημαντικές εκτιμήσεις και βέλτιστες πρακτικές ασφαλείας:</b> <p> <p> * <b> Βάση δεδομένων:</b> Αντικαταστήστε τον πίνακα "χρηστών" σε μια πραγματική βάση δεδομένων (π.χ. MongoDB, PostgreSQL, MySQL). Χρησιμοποιήστε μια βιβλιοθήκη βάσης δεδομένων (όπως το Mongoose για το MongoDB ή το Sequelize για το PostgreSQL/MySQL) για να αλληλεπιδράσετε με τη βάση δεδομένων. <p> * <b> Κωδικός πρόσβασης:</b> * Ποτέ* αποθηκεύστε τους κωδικούς πρόσβασης σε plaintext. Χρησιμοποιείτε πάντα έναν ισχυρό αλγόριθμο hashing κωδικού πρόσβασης όπως το `bcrypt` (όπως φαίνεται στο παράδειγμα). Το "Bcrypt` περιλαμβάνει το Salting, γεγονός που καθιστά πολύ πιο δύσκολο για τους επιτιθέμενους να σπάσουν τους κωδικούς πρόσβασης ακόμη και αν αποκτήσουν τη βάση δεδομένων. Χρησιμοποιήστε το `bcrypt.hash () σε κωδικούς πρόσβασης κατακερματισμού όταν οι χρήστες εγγραφούν και` bcrypt.compare () `για να συγκρίνετε τον εισαγόμενο κωδικό πρόσβασης με το αποθηκευμένο hash κατά τη διάρκεια της σύνδεσης. <p> * <b> Επικύρωση εισόδου:</b> Επικύρωση της εισόδου χρήστη τόσο στην πλευρά του πελάτη (για εμπειρία χρήστη) όσο και στην πλευρά του διακομιστή (για ασφάλεια). Απορρίψτε τις εισροές για την πρόληψη επιθέσεων έγχυσης (π.χ., SQL ένεση, XSS). <p> * <b> Διαχείριση περιόδου σύνδεσης:</b> Χρησιμοποιήστε συνεδρίες για να διατηρήσετε την κατάσταση σύνδεσης του χρήστη. Μετά την επιτυχή σύνδεση, αποθηκεύστε ένα αναγνωριστικό περιόδου σύνδεσης σε ένα cookie στο πρόγραμμα περιήγησης του πελάτη. Στις επόμενες αιτήσεις, ο διακομιστής μπορεί να χρησιμοποιήσει το αναγνωριστικό περιόδου σύνδεσης για να προσδιορίσει τον χρήστη χωρίς να απαιτεί να συνδεθεί ξανά. Οι βιβλιοθήκες όπως η `express-session` μπορούν να βοηθήσουν στη διαχείριση των συνεδριών. <p> * <b> https:</b> Χρησιμοποιείτε πάντα HTTPS (SSL/TLS) για να κρυπτογραφήσετε την επικοινωνία μεταξύ του πελάτη και του διακομιστή. Αυτό αποτρέπει την παρακολούθηση και τις επιθέσεις του ανθρώπου-σε-μεσαίας. Αποκτήστε ένα πιστοποιητικό SSL από μια αρχή πιστοποιητικών (π.χ., ας κρυπτογραφούν). <p> * <b> Χειρισμός σφαλμάτων:</b> Εφαρμόστε τον σωστό χειρισμό σφαλμάτων για να αποφευχθεί η εκτέλεση ευαίσθητων πληροφοριών σε μηνύματα σφάλματος. Σφάλματα καταγραφής με ασφάλεια. <p> * <b> Προστασία CSRF:</b> Προστατεύστε τις επιθέσεις πλαστογραφίας (CSRF) (CSRF), χρησιμοποιώντας τα μάρκες CSRF. <p> * <b> Περιορισμός ρυθμού:</b> Εφαρμόστε τον περιορισμό του επιτοκίου για την πρόληψη επιθέσεων βίαιης δύναμης στο τελικό σημείο σύνδεσης. <p> <p> <b> Πώς να εκτελέσετε το παράδειγμα:</b> <p> <p> 1. <b> Δημιουργία καταλόγου έργου:</b> Δημιουργήστε έναν κατάλογο για το έργο σας (π.χ. `login-app`). <p> 2. <b> Δημιουργία αρχείων:</b> Δημιουργήστε τα ακόλουθα αρχεία μέσα στον κατάλογο του έργου:<p> * `login.html` (αντιγράψτε τον κωδικό HTML) <p> * `style.css` (αντιγράψτε τον κωδικό CSS) <p> * `script.js` (αντιγράψτε τον κωδικό JavaScript) <p> * `server.js` (ή` app.js`, ή ό, τι θέλετε να ονομάσετε το αρχείο διακομιστή node.js - αντιγράψτε τον κωδικό node.js) <p> * Δημιουργήστε ένα φάκελο `public` και βάλτε` login.html`, `style.css` και` script.js` μέσα σε αυτό. <p> 3. <b> Εγκατάσταση εξαρτήσεων:</b> Ανοίξτε ένα τερματικό στον κατάλογο του έργου και εκτελέστε:<p> `` `bash <p> NPM Εγκατάσταση Express Body-Parser Bcrypt <p> `` ` <p> 4. <b> Εκτελέστε τον διακομιστή:</b> Στο τερματικό, τρέξτε:<p> `` `bash <p> Node Server.js <p> `` ` <p> 5. <b> Ανοίξτε στο πρόγραμμα περιήγησης:</b> Ανοίξτε το πρόγραμμα περιήγησης στο Web και μεταβείτε στο `http:// localhost:3000`. Θα πρέπει να δείτε τη σελίδα σύνδεσης. <p> <p> Θυμηθείτε ότι αυτό είναι ένα βασικό παράδειγμα. Για μια εφαρμογή πραγματικού κόσμου, θα χρειαστεί να εφαρμόσετε την κατάλληλη ενσωμάτωση βάσης δεδομένων, διαχείριση συνεδριών και μέτρα ασφαλείας. <div class="grad2"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3314932315682382" crossorigin="anonymous"></script> <!-- 221021-2 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3314932315682382" data-ad-slot="8094203668" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> <div class="grad3"></div> </div> <div class="fanyedads"> <ul> <li>Τελευταίο άρθρο: <a class='LinkPrevArticle' href='http://www.221021.com/Troubleshooting/passwords/353176.html' >Πώς αποκτάτε πρόσβαση στο φάκελο κωδικού πρόσβασης εάν ο κατάλογος βρίσκεται κλειδωμένος. Κλειδώθηκα από όλε…</a> <li>Επόμενο άρθρο: <a class='LinkNextArticle' href='http://www.221021.com/Troubleshooting/passwords/353183.html' >Τι κάνετε όταν ξεχάσετε τον κωδικό πρόσβασής σας στο Whoshere; </a> </ul> </div> </div> <div class="woqinimaderwr24"> <div class="dibud23"> <div class="biaotidas51"> <div class="biaotidas511"><h3>Συναφής σύστασή</h3></div> <div class="butudasda"></div> </div> </div> <div class="dibud24"> <div class="dibud241"> <ul class="dsa31das"> <li><a href="http://www.221021.com/Troubleshooting/passwords/353013.html" target="_blank">Πού αποθηκεύεται ο κωδικός πρόσβασης ρίζας στο Ubuntu; </a></li> <li><a href="http://www.221021.com/Troubleshooting/passwords/354208.html" target="_blank">Όταν πηγαίνετε σε ασφαλή λειτουργία, ζητάτε ακόμα έναν κωδικό πρόσβασης; </a></li> <li><a href="http://www.221021.com/Troubleshooting/passwords/198876.html" target="_blank">Πώς να υπολογίσετε Administrator Password μου </a></li> <li><a href="http://www.221021.com/Troubleshooting/passwords/354034.html" target="_blank">Μπορείτε να αλλάξετε τον κωδικό πρόσβασης διαχειριστή από μη χρήστες στο XP; </a></li> <li><a href="http://www.221021.com/Troubleshooting/passwords/346206.html" target="_blank">Πώς το ICHANGE CASSPERATE CASSPERTY WINDERS LIVE Messenger; </a></li> </ul> </div> <div class="dibud242"> <div class="biaotidasoidasf3h4"> <h4>Τελευταία άρθρα</h4> <div class="nibushihenzaiyi"></div> </div> <ul class="thydghaodennrend"> <li><a href="http://www.221021.com/Troubleshooting/passwords/283487.html" target="_blank">Μπορεί κάποιος να έχει πολλά ονόματα χρήστη για μια σύνδεση στο gmail; </a></li> <li><a href="http://www.221021.com/Troubleshooting/passwords/351971.html" target="_blank">Πού εμφανίζεται ο κωδικός πρόσβασης CMOS; </a></li> <li><a href="http://www.221021.com/Troubleshooting/passwords/353937.html" target="_blank">Ποιες εντολές Linux μπορούν να χρησιμοποιηθούν για να ορίσετε ημερομηνία λήξης για έναν κωδικό πρόσβασης; </a></li> <li><a href="http://www.221021.com/Troubleshooting/passwords/284659.html" target="_blank">Θέλω να δημιουργήσω νέο λογαριασμό; </a></li> </ul> </div> </div> </div> <div class="dibudaohnagdsaw"> <div class="das342sd"><p>Πνευματικά δικαιώματα © <a href="http://www.221021.com/" target="_blank" >Γνώση Υπολογιστών</a> Όλα τα δικαιώματα κατοχυρωμένα </p></div> </div> </div> </body> </html>