Μεταφορά site και πρόβλημα με πινακα χρηστών

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
tsourou
Δημοσιεύσεις: 7
Εγγραφή: 04 Μάιος 2010 21:54

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από tsourou » 10 Ιαν 2013 16:34

Γειά σας και καλή χρονιά σε όλους.

Ξεκινάω με το θέμα μου,
Πρόσφατα μετέφερα ένα site σε καινούριο server.
Το site έχει μια περιοχή όπου απαιτεί login για να ανοίξει.
Το πρόβλημα είναι ότι πλέον δεν αναγνωρίζει κανέναν από τους χρήστες που έχει ο αντίστοιχος πίνακας.

Έβαλα χειροκίνητα ένα καινούριο χρήστη στο πίνακα με κωδικοποίηση password MD5, αλλά τίποτα.

Παρατήρησα ότι ο κωδικός των είδη υπάρχοντων χρηστών έχει αυτή τη μορφή "*B3D3A4E76310154B8B22B27DEA4DB6DCD2168CD7".

Καμιά ιδέα για το τι ακριβώς συμβαίνει?

Ευχαριστώ.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από Apostolis_38 » 10 Ιαν 2013 17:16

Μήπως το πρόβλημα δεν είναι στον κωδικό αλλά κάπου αλλού;
Κάποιο εσφαλμένο link, κάποιο παλιό αρχείο/κωδικός σύνδεσης ξεχασμένα κάπου στο site. κ.λ.π.
Κοίτα το error log/ενεργοποίησε τα errors στη σελίδα σου/κάνε echo το query να δεις μήπως βρίσκεται κάπου αλλού το πρόβλημα.
Κανονικά με τον χρήστη που άνοιξες εσύ (εφόσον ανοίχτηκε όπως απαιτεί η εφαρμογή) θα έπρεπε να παίζει.

Υ.Γ. Ρίξε και μια ματιά στο character encoding της βάσης και αν συμβαδίζει με της εφαρμογής.

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από mrpc » 10 Ιαν 2013 22:31

tsourou έγραψε:Έβαλα χειροκίνητα ένα καινούριο χρήστη στο πίνακα με κωδικοποίηση password MD5, αλλά τίποτα.

Παρατήρησα ότι ο κωδικός των είδη υπάρχοντων χρηστών έχει αυτή τη μορφή "*B3D3A4E76310154B8B22B27DEA4DB6DCD2168CD7".
Πάντως αυτό δεν είναι MD5.

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από giannis17 » 11 Ιαν 2013 04:17

mrpc έγραψε:
tsourou έγραψε:Έβαλα χειροκίνητα ένα καινούριο χρήστη στο πίνακα με κωδικοποίηση password MD5, αλλά τίποτα.

Παρατήρησα ότι ο κωδικός των είδη υπάρχοντων χρηστών έχει αυτή τη μορφή "*B3D3A4E76310154B8B22B27DEA4DB6DCD2168CD7".
Πάντως αυτό δεν είναι MD5.
Συμφωνώ έπρεπε να είναι αρκετά πιο μικρό (32 χαρακτήρες) και δεν παίρνει σύμβολα το δικό σου ξεκινάει με αστερίσκο *

Το πιο πιθανό είναι κάτι να μην έγινε σωστά στη μεταφορά της βάσης όσον αφορά τον τύπο δεδομένων και σου μετέτρεψε τα md5 σε κάτι άλλο άσχετο.
Δες αν οι ρυθμίσεις της καινούριας βάσης με τη παλιά συμβαδίζουν (db engine InnoDB-MyISAM, encoding utf8_general_ci, έκδοση MySQL) και μετά δοκίμασε να κάνεις drop τον συγκεκριμένο πίνακα, κάντον create χειροκίνητα και μετά κάνε μαζικά insert όλες τις εγγραφές.
"There is only one problem with common sense; it’s not very common."
– Milt Bryce

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από korgr » 11 Ιαν 2013 11:00

In MySQL 4.1.1, the hashing method was modified to produce a longer 41-byte hash value:

mysql> SELECT PASSWORD('mypass');
+-------------------------------------------+
| PASSWORD('mypass') |
+-------------------------------------------+
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-------------------------------------------+
The longer password hash format has better cryptographic properties, and client authentication based on long hashes is more secure than that based on the older short hashes.

To accommodate longer password hashes, the Password column in the user table was changed at this point to be 41 bytes, its current length.

tsourou
Δημοσιεύσεις: 7
Εγγραφή: 04 Μάιος 2010 21:54

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από tsourou » 11 Ιαν 2013 12:18

Καταρχήν σας ευχαριστώ όλους για την άμεση ανταπόκριση.
Μήπως το πρόβλημα δεν είναι στον κωδικό αλλά κάπου αλλού;
Κάποιο εσφαλμένο link, κάποιο παλιό αρχείο/κωδικός σύνδεσης ξεχασμένα κάπου στο site. κ.λ.π.
Κοίτα το error log/ενεργοποίησε τα errors στη σελίδα σου/κάνε echo το query να δεις μήπως βρίσκεται κάπου αλλού το πρόβλημα.
Κανονικά με τον χρήστη που άνοιξες εσύ (εφόσον ανοίχτηκε όπως απαιτεί η εφαρμογή) θα έπρεπε να παίζει.

Υ.Γ. Ρίξε και μια ματιά στο character encoding της βάσης και αν συμβαδίζει με της εφαρμογής.
  • error log - οκ
    εσφαλμένο link - δεν υπάρχει
    κάποιο παλιό αρχείο/κωδικός σύνδεσης ξεχασμένα κάπου στο site - ούτε
Το query φαίνεται να δουλεύει σωστά, "το username 'η password είναι εσφαλμένα"!
Το character encoding είναι ίδιο.

Επίσης, μπήκα στη παλιά βάση και ο κωδικός έχει την ίδια μορφή, όπως και το encoding της βάσης.

Δεν έχω κάνει ακόμα drop όλο το πίνακα και Create ξανά - είναι στα επόμενα σχέδια.


παράθεση:
In MySQL 4.1.1, the hashing method was modified to produce a longer 41-byte hash value:

mysql> SELECT PASSWORD('mypass');
+-------------------------------------------+
| PASSWORD('mypass') |
+-------------------------------------------+
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-------------------------------------------+
The longer password hash format has better cryptographic properties, and client authentication based on long hashes is more secure than that based on the older short hashes.

To accommodate longer password hashes, the Password column in the user table was changed at this point to be 41 bytes, its current length.
?οκ, καλύτερη κρυπτογράφιση, γιατί δεν το αναγνωρίζει στο Login, όλα είναι ίδια όπως πριν, η προηγούμενη βάση είναι έκδοση 5.0 και η καινούρια 5.1.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από Apostolis_38 » 11 Ιαν 2013 12:44

tsourou έγραψε:Το query φαίνεται να δουλεύει σωστά, "το username 'η password είναι εσφαλμένα"
Οταν κάνεις echo το query το username και το password είναι ακριβώς ίδια με αυτά στην βάση;
Χρησιμοποιείς κάτι τέτοιο

Κώδικας: Επιλογή όλων

md5 ($_POST["username "])
στο input;

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από giannis17 » 11 Ιαν 2013 12:49

Είχα ένα πρόβλημα πιο παλιά με μετάβαση από mysql 5 σε 5.1 όσον αφορά το encoding. Για κάποιο λόγο στην έκδοση 5.1 πρέπει να ορίζεις το encoding για κάθε connection (τουλάχιστον ήθελε να το ορίσω χειροκίνητα σε ένα πρόγραμμα JAVA που είχα κάνει και συνδεόμουνα με JDBC), ο αντίστοιχος τρόπος για την PHP είναι να χρησιμοποιήσεις την εντολή mysqli_set_charset κατα τη σύνδεση στο script σου. Κάντο μια δοκιμή δεν χάνεις τίποτα.
"There is only one problem with common sense; it’s not very common."
– Milt Bryce

tsourou
Δημοσιεύσεις: 7
Εγγραφή: 04 Μάιος 2010 21:54

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από tsourou » 11 Ιαν 2013 13:01

Apostolis_38 έγραψε:
tsourou έγραψε:Το query φαίνεται να δουλεύει σωστά, "το username 'η password είναι εσφαλμένα"
Οταν κάνεις echo το query το username και το password είναι ακριβώς ίδια με αυτά στην βάση;
Χρησιμοποιείς κάτι τέτοιο

Κώδικας: Επιλογή όλων

md5 ($_POST["username "])
στο input;
Είναι ίδια ναι, αλλά το query είναι έτσι:
if (isset($_POST['username']) && isset($_POST['password'])) {
include 'library/configdb.php';
include 'library/opendb.php';

$userName = trim($_POST['username']);
$password = trim($_POST['password']);

$query = "SELECT username
FROM authentication_data
WHERE username = '$userName'
AND password = PASSWORD('$password')";
$result = mysql_query($query, $linkID) or die('Query failed. ' . mysql_error());
if(mysql_num_rows($result) >= 1) //username and password were found in the database
{
$_SESSION['db_is_logged_in'] = true;
echo $query;
Πριν κάνω echo ο κώδικας τελείωνε έτσι:
echo "Authentication Accepted";

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από Apostolis_38 » 11 Ιαν 2013 13:34

Κάνε αυτό που λέει ο giannis17.
Βάλε αυτό

Κώδικας: Επιλογή όλων

mysql_query("SET NAMES 'η κωδικοποίηση σου' ")
πρίν το $query για να σιγουρευτούμε οτι όλα είναι εντάξει από πλευράς κώδικα.


Απορία.
Μετά το echo "Authentication Accepted"; τι υποτίθεται οτι πρέπει να κάνει το πρόγραμμα;
Μήπως συνδέεται και είναι αλλού το πρόβλημα σου;

tsourou
Δημοσιεύσεις: 7
Εγγραφή: 04 Μάιος 2010 21:54

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από tsourou » 11 Ιαν 2013 13:39

Apostolis_38 έγραψε:Κάνε αυτό που λέει ο giannis17.
Βάλε αυτό

Κώδικας: Επιλογή όλων

mysql_query("SET NAMES 'η κωδικοποίηση σου' ")
πρίν το $query για να σιγουρευτούμε οτι όλα είναι εντάξει από πλευράς κώδικα.


Απορία.
Μετά το echo "Authentication Accepted"; τι υποτίθεται οτι πρέπει να κάνει το πρόγραμμα;
Μήπως συνδέεται και είναι αλλού το πρόβλημα σου;
Μετά το echo, ανοίγει η διαχείρηση 2 ενοτήτων.

Δοκιμάζω το echo ξανά!

tsourou
Δημοσιεύσεις: 7
Εγγραφή: 04 Μάιος 2010 21:54

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από tsourou » 11 Ιαν 2013 14:10

Δοκίμασα,

mysql_query("SET NAMES 'utf8_unicode_ci' ")
και βγαίνει σε λευκή σελίδα αυτή τη φορά, χωρις κάποιο μήνυμα.

έκανα και μια παραλλαγή, αλλά δεν ξέρω αν είναι σωστή:
@mysql_query("SET NAMES 'utf8_unicode_ci' COLLATE 'utf8_unicode_ci'");
η οποία με ξαναγύρισε στο login ( Authentication Rejected. Wrong login name or password.)

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από Apostolis_38 » 11 Ιαν 2013 14:45

Κώδικας: Επιλογή όλων

mysql_query("SET NAMES 'utf8' ") or die (mysql_error());

tsourou
Δημοσιεύσεις: 7
Εγγραφή: 04 Μάιος 2010 21:54

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από tsourou » 11 Ιαν 2013 14:49

<?php

//fetch values from POST array
if (isset($_POST['username']) && isset($_POST['password'])) {
include 'library/configdb.php';
include 'library/opendb.php';

$userName = trim($_POST['username']);
$password = trim($_POST['password']);

// check if the user id and password combination exist in database
$query = "SELECT username
FROM authentication_data
WHERE username = '$userName'
AND password = PASSWORD('$password')";
$result = mysql_query($query, $linkID) or die('Query failed. ' . mysql_error());
if(mysql_num_rows($result) >= 1) //username and password were found in the database
{
$_SESSION['db_is_logged_in'] = true;
echo "Authentication Accepted";;
?>
Το βρήκα παιδιά....

AND password = PASSWORD('$password')";

το "PASSWORD" κάνει μια κωδικοποίηση την οποία δεν τη βρίσκω πουθενά.
Το αφαίρεσα και έβαλα ενα demo και ανοίγει κανονικά.
Το μόνο που με προβληματίζει τώρα είναι να βρώ που είναι αυτή η κωδικοποίηση γιατι θα μου πέσει λίγο δύσκολο να ξαναφτιάξω όλους τους χρήστες! (είναι πολλοί)

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Μεταφορά site και πρόβλημα με πινακα χρηστών

Δημοσίευση από Apostolis_38 » 11 Ιαν 2013 15:00

Η κωδικοποίηση αυτή γίνεται on the fly όταν αντιπαραβάλεις τα δεδομένα που έστειλε ο χρήστης με αυτά που υπάρχουν στη βάση. Δεν εκτελεί κάποια ενέργεια αλλαγής των data στη βάση.
Πρέπει να ψάξεις αν υπάρχει script που καταχωρεί το password.

Πάντως, στο script αυτό αν το κάνεις

Κώδικας: Επιλογή όλων

$password = md5&#40;$_POST&#91;password'&#93;&#41;;
και

Κώδικας: Επιλογή όλων

AND password = $password
δεν νομίζω οτι θα έχεις πρόβλημα.

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες