sql >> Database >  >> RDS >> Mysql

HTML opslaan in MySQL-database

Strings in een SQL-query worden -meestal- omgeven door enkele aanhalingstekens. Bijv.

INSERT INTO tbl (html) VALUES ('html');

Maar als de HTML-string zelf ook een enkel aanhalingsteken bevat, zou het de SQL-query breken:

INSERT INTO tbl (html) VALUES ('<form onsubmit="validate('foo', 'bar')">');

Je ziet het al in de syntax highlighter, de SQL-waarde eindigt vlak voor foo en de SQL-interpreter kan niet begrijpen wat daarna komt. SQL-syntaxisfout!

Maar dat is niet het enige, het zet de deuren ook wijd open voor SQL-injecties (voorbeelden hier ).

Je zult de SQL echt moeten opschonen tijdens het construeren van de SQL-query. Hoe u dit moet doen, hangt af van de programmeertaal die u gebruikt om de SQL uit te voeren. Als het bijvoorbeeld PHP is, heb je mysql_real_escape_string() :

$sql = "INSERT INTO tbl (html) VALUES ('" . mysql_real_escape_string($html) . "')";

Een alternatief in PHP is het gebruik van voorbereide verklaringen , het zal SQL-escaping voor u afhandelen.

Als je Java gebruikt (JDBC ), dan heb je PreparedStatement nodig :

String sql = "INSERT INTO tbl (html) VALUES (?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, html);

Bijwerken :het blijkt dat je inderdaad Java gebruikt. U moet de code als volgt wijzigen:

String sql = "INSERT INTO website (URL, phishing, source_code, active) VALUES (?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, URL);
preparedStatement.setString(2, phishingState);
preparedStatement.setString(3, sourceCode);
preparedStatement.setString(4, webSiteState);
preparedStatement.executeUpdate();

Vergeet niet goed om te gaan met JDBC-resources. Mogelijk vindt u dit artikel handig om wat inzicht te krijgen hoe je basis JDBC-dingen op de juiste manier kunt doen. Ik hoop dat dit helpt.



  1. Hoe krijg je een rijrangschikking?

  2. postgresql en pgadmin starten in Windows zonder installatie

  3. Een ORA 028513 DG4ODBC-fout onderzoeken

  4. hoe cte-waarde toe te wijzen aan variabele