Π ΡΠ΅Π± ΡΠ°ΠΌΠΊΠ°ΡΠ° Π½Π° Grails, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ MVC ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°ΡΠ° Π² Java, Groovy ΠΈ Π΄ΡΡΠ³ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° JVM, Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ Π² ΡΡΠ΅Π΄Π°ΡΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ°Π±ΠΎΡΠΈ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ΅Π· ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΈΠ·ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π·Π°ΡΠ²ΠΊΠ°, ΠΊΠΎΡΡΠΎ Π΄Π°Π²Π° Π½Π° Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ClassLoader. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ ΠΎΡ Π³ΡΠ΅ΡΠΊΠ° Π² Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ ΠΏΡΠΈ ΡΡΡΠ½ΠΎ ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° bindData. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π±Π΅ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ Π²ΡΠ² Π²Π΅ΡΡΠΈΠΈ 3.3.15, 4.1.1, 5.1.9 ΠΈ 5.2.1.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ Π² Ruby ΠΌΠΎΠ΄ΡΠ»Π° tzinfo, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ», Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΡΠ°Π²Π°ΡΠ° Π·Π° Π΄ΠΎΡΡΡΠΏ Π½Π° Π°ΡΠ°ΠΊΡΠ²Π°Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΡΠ΅ Π΄ΡΠ»ΠΆΠΈ Π½Π° Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ Π·Π½Π°ΡΠΈ Π² ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°ΡΠΎΠ²Π°ΡΠ° Π·ΠΎΠ½Π°, ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π² ΠΌΠ΅ΡΠΎΠ΄Π° TZInfo::Timezone.get. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π·Π°ΡΡΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ Π²ΡΠ½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° TZInfo::Timezone.get. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»Π° /tmp/payload, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΊΠ°ΡΠΎ "foo\n/../../../tmp/payload".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru