sql >> Databasteknik >  >> RDS >> Mysql

PHP Vad är standardteckenuppsättningen för pdo mysql

Alternativet character_set_client är vad MySQL använder för teckenuppsättningen av frågor och data som klienten skickar.

Standard är utf8 i MySQL 5.5, 5.6 och 5.7, och utf8mb4 i 8.0.

Det kan också ändras globalt i din my.cnf-alternativfil, eller per session av en SETT NAMN uttalande.

Det är bra att ställa in alternativet uttryckligen när du ansluter, så att du inte behöver anta dess standardvärde.

Angående din kommentar:

Jag är rädd att du blandar ihop två olika fall av SQL-injektion. Det finns en risk när man använder dessa specifika fem teckenuppsättningar, men det är inte relaterat till andra ordningens SQL-injektion.

Teckenuppsättningsrisken beror på vissa teckenuppsättningar med flera byte. Det är vanligt att infoga ett snedstreck för att undvika ett bokstavligt citattecken. Men i vissa teckenuppsättningar slås omvänt snedstreckbyte samman med föregående byte och bildar ett flerbytetecken. Det lämnar citatet ofrånkomligt.

Andra ordningens SQL-injektion är helt annorlunda. Det kan förekomma med vilken teckenuppsättning som helst. Det är när en angripare lägger till data till din databas på legitima sätt, som att fylla i ett formulär. Infogning av data hanteras utan fel. Men värdena de infogar innehåller syntax som är utformad för att utnyttja en senare SQL-fråga.

Det förlitar sig på att utvecklare tror att data som redan har sparats säkert i deras databas på något sätt är "säker" för användning utan korrekt parametrering.

Ett exempel på andra ordningens SQL-injektion som bara är oavsiktlig istället för skadlig kan vara att en person har efternamnet "O'Reilly" och namnet läses av koden och används i en efterföljande fråga.

$name = $db->query("SELECT last_name FROM people WHERE id = 123")->fetchColumn();
$sql = "SELECT * FROM accounts WHERE account_owner_last_name = '$name'";

Om namnet innehåller en bokstavlig apostrof, skulle det förstöra den andra frågan i det exemplet.




  1. Databasdesign:3 typer av användare, separat eller en tabell?

  2. MySQLi förberedde uttalanden som visar fel på grund av att MySQLnd inte har installerats

  3. Mysql-tjänsten startar inte, InnoDB init-funktionsfel

  4. Hur RIGHT()-funktionen fungerar i SQL Server (T-SQL)