Heim > Datenbank > MySQL-Tutorial > So implementieren Sie die Kürzung langer Zeichen in MySQL

So implementieren Sie die Kürzung langer Zeichen in MySQL

WBOY
Freigeben: 2023-06-03 11:37:12
nach vorne
1645 Leute haben es durchsucht

Das Abschneiden ultralanger Zeichen in MySQL, auch bekannt als „SQL-Column-Truncation“, wurde im August 2008 vom Sicherheitsforscher Stefan Esser vorgeschlagen.

Es gibt eine sql_mode-Option in einer Einstellung in MySQL. Wenn sql_mode auf den Standardwert eingestellt ist, d ein zu langer Wert. Dies kann zu Problemen beim Abschneiden führen.

Erstellen Sie eine neue Tabelle zum Testen. Die Tabellenstruktur ist wie folgt (MySQL5.1):

CREATE TABLE USERS(
id int(11) NOT NULL, //长度为7
username varchar(7)NOT NULL,
password varchar(12)NOT NULL , 
)
Nach dem Login kopieren

Fügen Sie jeweils die folgenden SQL-Anweisungen (Inject-Prompt-Meldungen) ein.

①Fügen Sie eine normale SQL-Anweisung ein.

mysql> insert into users(id,username,password)values(1,'admin','admin');//成功插入,无警告,无错误
 
Query OK,1 row affected(0.00 sec)
Nach dem Login kopieren

②Fügen Sie die falsche SQL-Anweisung ein. Zu diesem Zeitpunkt befinden sich rechts von „admin“ drei Leerzeichen und die Länge beträgt 8, was die ursprünglich angegebene Länge überschreitet.

mysql> insert into users(id,username,password)values(2,'admin       ','admin');
//成功插入,一个警告
Query OK,1 row affected,1 warning(0.00 sec)
Nach dem Login kopieren

③Die falsche SQL-Anweisung wurde eingefügt und die Länge hat die ursprünglich angegebene Länge überschritten.

mysql> insert into users(id,username,password) values(3,'admin    x','admin');
//成功插入,一个警告
Query OK,1 row affected,1 warning(0.00 sec)
Nach dem Login kopieren

MySQL meldet, dass alle drei Anweisungen in die Datenbank eingefügt wurden, die letzten beiden Anweisungen jedoch Warnungen generierten. Sie können bestätigen, ob es in die Datenbank eingefügt wurde, indem Sie eine SQL-Anweisung ausführen.

mysql> select username from users;
Nach dem Login kopieren

Sie können sehen, dass alle drei Daten in die Datenbank eingefügt wurden, die Werte sich jedoch geändert haben. Zu diesem Zeitpunkt wird die Länge durch Länge ermittelt, um die Länge des Werts zu bestimmen.

mysql> select length(username)from users where id =1 ;
Nach dem Login kopieren

Es kann festgestellt werden, dass die Länge der zweiten und dritten Daten 7 beträgt, was der angegebenen Länge der Spalte entspricht. Es ist ersichtlich, dass MySQL standardmäßig abschneidet, wenn die Daten die Standardlänge der Spalte überschreiten Es.

Aber wie kann das als Angriff gewertet werden?

Das können Sie herausfinden, indem Sie den Benutzernamen „admin“ abfragen.

mysql> select username from users where username='admin';
Nach dem Login kopieren

Es wird nur der Benutzer mit dem Namen admin abgefragt, aber auch die anderen beiden Admin-Benutzer mit inkonsistenter Länge werden abgefragt, was zu einigen Sicherheitsproblemen führt. Beispielsweise gibt es eine Administrator-Anmeldung, die auf diese Weise beurteilt wird. Die Aussage lautet wie folgt :

$sql = "select count(*) from users where username='admin' and password='*******;
Nach dem Login kopieren

Auch wenn die SQL-Anweisung keine Injektionsschwachstelle aufweist, kann sich der Angreifer dennoch auf der Verwaltungsseite anmelden. Angenommen, der Benutzername des Administrator-Logins lautet admin, dann muss der Angreifer nur einen „Administrator“-Benutzer registrieren, um problemlos auf die Backend-Verwaltungsseite zuzugreifen. Das berühmte WordPress wurde auf diese Weise angegriffen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Kürzung langer Zeichen in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage