Как сделать строку безопасной для базы данных Javascript Webkit - PullRequest
0 голосов
/ 27 марта 2011

Я пишу приложение Webkit, которое импортирует данные из RSS-канала и сохраняет их в базе данных Javascript. Поскольку данные поступают из внешнего источника, я хочу убедиться, что строки были сделаны безопасными, прежде чем вставлять их в базу данных. Например, в PHP я бы использовал функцию «mysql_real_escape_string», которая экранирует кавычки и другие символы.

В идеале я хочу держаться подальше от встроенных функций, чтобы это приложение могло быть развернуто на нескольких телефонных платформах (iPhone, Blackberry, Android) с помощью WebKit.

Ссылка на эквивалентную функцию PHP: http://php.net/manual/en/function.mysql-real-escape-string.php

Ссылка на документацию базы данных javascript: https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase.html

Пример кода:

В настоящее время это:

mydb.transaction(
    function(transaction) {
        transaction.executeSql("INSERT INTO rss (url,title) VALUES (?,?);",["www.some-rss-feed.com","a title containing a' quote"], successFunction, errorFunction);
    }
);

В идеале это должно быть что-то вроде следующего, где "a_safe_function" - это имя функции, которая делает строку безопасной для базы данных.

mydb.transaction(
    function(transaction) {
        transaction.executeSql("INSERT INTO rss (url,title) VALUES (?,?);",[a_safe_function("www.some-rss-feed.com"),a_safe_function("a title containing a' quote")], successFunction, errorFunction);
    }
);

Библиотеки, которые я использую:

  • iPhoneGap
  • JQueryMobile
  • JQuery

1 Ответ

1 голос
/ 27 марта 2011

Вам не нужно делать экранирование при передаче запроса и аргументов отдельно.

Объединение запроса и параметров - уродливая вещь, которая в основном выполняется для PHP + MySQL, поскольку у PHP не было надлежащего способа передавать запрос и параметры отдельно перед PDO - и даже в настоящее время многие люди не используют PDO, а скорее избегают своих значений (или забыв об этом; x) и создавая строки SQL синхронно: /

...