ФорумПрограммированиеJavaScript → Безопасность при выводе "php->js"

Безопасность при выводе "php->js"

  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 16 ноября 2010 г. 0:50

    Доброго.
    До сего момента считал, что, формируя на php код js, достаточно использовать addslashes().

    Сегодня поймался на вот таком куске
    alert('e_<?=addslashes($e->getMessage())?>');

    В тексте ошибки затесался перевод строки и пришлось изобретать
    alert('e_<?=addslashes(str_replace("\n",'\n',$e->getMessage()))?>');


    Кто какие решения использует для безопасного формирования JS-кода?
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 16 ноября 2010 г. 1:32, спустя 41 минуту 54 секунды

    AndryG, php.net/json_encode
    Сапожник без сапог
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 16 ноября 2010 г. 1:47, спустя 14 минут 54 секунды

    Я честно не понимаю нахуй нужно динамически формировать жс код на сервере… надо что-то получить на клиенте? айакс, хуле
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 16 ноября 2010 г. 1:55, спустя 8 минут 45 секунд

    надо что-то получить на клиенте? айакс, хуле

    не пытайся быть умным, плохо выходит :D

    на самом деле дохуя задач когда хочется СРАЗУ контент в хтмле. да теже галереи изображениевые
    Сапожник без сапог
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 16 ноября 2010 г. 3:02, спустя 1 час 6 минут 11 секунд

    хочется СРАЗУ контент в хтмле

    Ну дык и вставляй в хтмл, зачем же в жс то?)))
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 16 ноября 2010 г. 3:06, спустя 4 минуты 4 секунды


    хочется СРАЗУ контент в хтмле

    Ну дык и вставляй в хтмл, зачем же в жс то?)))
    от задачи зависит, и от удобства :)
    Сапожник без сапог
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 16 ноября 2010 г. 5:25, спустя 2 часа 18 минут 52 секунды

    phpdude, по твоей ссылке в комментариях нарыл два куска
        // All scalars are converted to strings to avoid indeterminism.
    // PHP's "1" and 1 are equal for all PHP operators, but
    // JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend,
    // we should get the same result in the JS frontend (string).
    // Character replacements for JSON.
    static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),
    array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
    return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
            # Escape non-printable or Non-ASCII characters.
    $string = '"' . addcslashes($data, "\"\\\n\r\t\f/" . chr(8)) . '"';

    rider-sx, порой неудобно и сложно устраивать общение брузера с сервером на чистом JS(используя JSON для передачи данных). Я часто просто подгружаю нужный html-контент с вкраплениями JS-кода. Еще чаще просто возвращаю часть JS-кода, который и есть реакцией сервера на запрос.
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 16 ноября 2010 г. 5:49, спустя 24 минуты 41 секунду

    rider-sx, вот нужно тебе на карте показать несколько меток. Метки в базе находятся. Как ты их буш подгружать? прально, JSON'ом
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 16 ноября 2010 г. 5:59, спустя 9 минут 38 секунд


    rider-sx, вот нужно тебе на карте показать несколько меток. Метки в базе находятся. Как ты их буш подгружать? прально, JSON'ом
    А я про что?))) ТС подставлял данные в жс еще не выведенный клиенту alert(<? echo $smth; ?>);

Пожалуйста, авторизуйтесь, чтобы написать комментарий!