Я думаю, мне тоже надо более ясно выразиться.
Существует две проблемы, связанных с корректным форматированием данных. Обсуждая тему, люди их часто путают, и в итоге получается совсем ерунда и невозможность договориться.
Это:
- безопасность
- порча данных
При всем уважении ко второму пункту, первый, все-таки, важнее.
Поэтому любое автоформатирование должно обеспечивать стопроцентную безопасность. Пример:
Если мы ВСЕ помещаемые в SQL запрос данные будем форматировать, как строки, то в худшем случае мы получим ошибку запроса, НО инъекция все равно не пройдёт. Это принципиально важный вопрос. На котором, в частности, строится и механизм работы пресловутого ПДО.
Это очень важный момент. Автоформатирование вполне имеет право на жизнь. Но если оно действует так, как описано выше - пусть будет ошибка, но не будет инъекции.
Только разобравшись с первым, мы можем переходить ко второму (который, в общем-то, проблемы никакой и не представляет - ответ на него я сформулировал в предыдущем сообщении). Но первый меня беспокоит.
Я в JS не силен, поэтому не могу сказать, можно ли что-то впихнуть что-нибудь в таком, примерно, контексте
если ничего вредоносного здесь впихнуть нельзя - окей, автомат в серию.
Если можно - надо менять конструкцию.
Существует две проблемы, связанных с корректным форматированием данных. Обсуждая тему, люди их часто путают, и в итоге получается совсем ерунда и невозможность договориться.
Это:
- безопасность
- порча данных
При всем уважении ко второму пункту, первый, все-таки, важнее.
Поэтому любое автоформатирование должно обеспечивать стопроцентную безопасность. Пример:
Если мы ВСЕ помещаемые в SQL запрос данные будем форматировать, как строки, то в худшем случае мы получим ошибку запроса, НО инъекция все равно не пройдёт. Это принципиально важный вопрос. На котором, в частности, строится и механизм работы пресловутого ПДО.
Это очень важный момент. Автоформатирование вполне имеет право на жизнь. Но если оно действует так, как описано выше - пусть будет ошибка, но не будет инъекции.
Только разобравшись с первым, мы можем переходить ко второму (который, в общем-то, проблемы никакой и не представляет - ответ на него я сформулировал в предыдущем сообщении). Но первый меня беспокоит.
Отсюда у меня и вопрос. Обеспечивает ли htmlspecialchars() стопроцентную защиту данных в любом контексте шаблона? В джейсоне, внутри JS кода, и пр?Что-что?
Я в JS не силен, поэтому не могу сказать, можно ли что-то впихнуть что-нибудь в таком, примерно, контексте
PHP:
document.write ("Hello"+<?=htmlspecialchars($name)?>)
Если можно - надо менять конструкцию.