Может быть для кого-то это и баян, но я вот только что открыл для себя одну неприятную особенность обработки параметров компонентов, когда в качестве значения параметра передается многоуровневый массив.
Т.к. этой особенностью могут воспользоваться для XSS-инъекций, то решил про нее написать тут.
Все знают, что значения параметров приходят в компонент в безопасном виде и их смело можно отправлять на вывод, что усыпляет бдительность, но, как оказалось, все же ухо следует держать востро. Если в качестве значения параметра передается массив с двумя и более уровнями вложенности, например,
то в безопасный вид этот массив привден не будет!
Т.е. если вы понадеетесь на битрикс и сделаете echo $arParams['SOME_PARAM']['a']['b'], то увидите сюрприз.
Также ВСЕГДА! остаются небезопасными ключи массива.
Лично я считаю эту особенность ошибкой, но исправлять ее нельзя.
В общем, не попадитесь.
Т.к. этой особенностью могут воспользоваться для XSS-инъекций, то решил про нее написать тут.
Все знают, что значения параметров приходят в компонент в безопасном виде и их смело можно отправлять на вывод, что усыпляет бдительность, но, как оказалось, все же ухо следует держать востро. Если в качестве значения параметра передается массив с двумя и более уровнями вложенности, например,
Код |
---|
array( 'a' => array( 'b' => '<script>alert("catch you!")</script>' ) ) |
то в безопасный вид этот массив привден не будет!
Т.е. если вы понадеетесь на битрикс и сделаете echo $arParams['SOME_PARAM']['a']['b'], то увидите сюрприз.
Также ВСЕГДА! остаются небезопасными ключи массива.
Лично я считаю эту особенность ошибкой, но исправлять ее нельзя.
В общем, не попадитесь.
Изменено: Leshchenko Sergey - 18.04.2011 22:23:08