Mysql
 sql >> база данни >  >> RDS >> Mysql

Съхранявайте HTML в MySQL база данни

Низовете в SQL заявка обикновено са заобиколени от единични кавички. Напр.

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

Но ако самият HTML низ съдържа и единични кавички, това ще наруши SQL заявката:

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

Вече го виждате в маркера на синтаксиса, SQL стойността завършва точно преди foo и SQL интерпретаторът не може да разбере какво идва след това. Грешка в синтаксиса на SQL!

Но това не е единственото, то също така поставя вратите широко отворен за SQL инжекции (примери тук ).

Наистина ще трябва да дезинфекцирате SQL по време конструиране на SQL заявка. Как да го направите зависи от езика за програмиране, който използвате за изпълнение на SQL. Ако е например PHP, ще ви трябва mysql_real_escape_string() :

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

Алтернатива в PHP е използването на подготвени оператори , той ще се справи с SQL екранирането вместо вас.

Ако използвате Java (JDBC ), тогава имате нужда от PreparedStatement :

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

Актуализиране :оказва се, че всъщност използвате Java. Ще трябва да промените кода, както следва:

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();

Не забравяйте да боравите правилно с ресурсите на JDBC. Може да намерите тази статия полезно, за да получите информация как да правите основни JDBC неща по правилния начин. Надявам се това да помогне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Код на грешка:1222. Използваните изрази SELECT имат различен брой колони

  2. Как да вмъкна моментно JS време в MySQL

  3. Общи приятели sql с присъединяване (Mysql)

  4. Как мога да изведа резултати от MySQL заявка във формат CSV?

  5. Заявката на MySQL се обесва и трябваше да убие процеса