Лучший способ избежать данных JS-> PHP-> MySQL и наоборот - PullRequest
4 голосов
/ 28 февраля 2011

Какие функции я должен использовать для кодирования / декодирования / экранирования / stripslash данных для следующих целей?

  1. при вызове сценария PHP из JS, например: page.php?data=don't_use_#_and_%_in_URL_params
  2. когдаPHP-скрипт получает параметр от JS, например: don%27t_use_%23_and_%25_in_URL_params
  3. при выполнении запроса MySQL из PHP с данными, ранее полученными из JS для предотвращения инъекций MySQL (допустим, мне нужно вставить в базу данных следующую последовательность символов: "``')
  4. , когда мне нужно сравнить в операторе MySQL значение поля, которое содержит "``' последовательность с выражением
  5. , когда мне нужно извлечь значение поля из таблицы MySQLи поле содержит "``', и я хочу использовать его в макросе подстановки PHP eval ()
  6. , когда мне нужно отправить данные из PHP в JS в ответе AJAX, и оно содержит "``' символов
  7. и, наконец, мне нужно eval () предыдущий ответ в JS

что-то вроде этой диаграммы:

JS (кодировать) -> (декодировать) PHP (кодировать) --> (декодировать?) MySQL (кодировать?)) -> (декодировать) MySQL (кодировать) -> (декодировать) JS

, если у кого-то есть время и удовольствие ответить, или исправить меня, если я допустил здесь какие-либо ошибки, заранее спасибо

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011
  1. encodeURIComponent
  2. $_GET
  3. Параметры, связанные с PDO
  4. Параметры, связанные с PDO в базе данных. В противном случае это просто строка в PHP
  5. Понятия не имею. Вы действительно должны были задать вопрос для каждого вашего вопроса. eval пахнет плохо.
  6. Выберите формат данных и используйте для этого соответствующую кодировку. JSON часто встречается.
  7. Единственный раз, когда вы должны приблизиться к eval(), это JS, когда вы реализуете поддержку json в браузерах без собственной версии (и для этого вы можете использовать json2.js Крокфорда). Так что не надо.
1 голос
/ 28 февраля 2011
  1. побег ()
  2. Никаких действий не требуется. 3-4. Источник данных здесь не имеет значения. Существуют общие правила для построения запроса, я уверен, что вы уже все это знаете. Если нет - обратитесь к этому полному объяснению .
  3. НИКОГДА сделай это. Это дыра размером с небоскреб в вашем приложении. Разве ты не видишь это?
  4. json_encode ()
  5. Eval? уверены ли вы? почему бы не отправлять данные только тогда, когда все коды уже присутствуют в JS?
...