Etherpad-lite: ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ ΡƒΠ±ΠΈΠ²Π°ΡŽΡ‚ Etherpad lite

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 23 ΠΎΠΊΡ‚. 2018  Β·  13ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: ether/etherpad-lite

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,

На нашСм сСрвСрС ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» сбой Etherpad. ΠœΡ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΈ Π½Π° этот нСприятный вопрос:

https://pad.bling.org/javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define&vLtF%3D6904%20AND%201%3D1%20UNION%20ALL%20SELECT%201%2CNULL%2C%27%3Cscript%3Ealert%28%22XSS%22%29%3C%2Fscript%3E%27%2Ctable_name%20FROM%20information_schema.tables%20WHERE%202%3E1--%2F%2A%2A%2F%3B%20EXEC%20xp_cmdshell%28%27cat%20..%2F..%2F..%2Fetc%2Fpasswd%27%29%23

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ "минимального" запроса:

https://pad.bling.org/javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define&vLtF%3D6904%20AND%201%3D1%20UNION%20ALL%20SELECT%201%2CNULL%2C%27%3Cscript%3Ealert(%22XSS%22)%3C%2Fscript%3E%27

Π­Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ сбой:

oct. 23 18:17:19 pad.bling.org run.sh[8976]: [2018-10-23 18:17:19.994] [ERROR] console - Error: ENAMETOOLONG: name too long, open '/var/www/etherpad-lite/var/minified_L2phdmFzY3JpcHRzL2xpYi9lcF9ldGhlcn
oct. 23 18:17:19 pad.bling.org run.sh[8976]:     at Error (native)
oct. 23 18:17:19 pad.bling.org run.sh[8976]: [2018-10-23 18:17:19.995] [INFO] console - graceful shutdown...
oct. 23 18:17:20 pad.bling.org run.sh[8976]: [2018-10-23 18:17:20.091] [INFO] console - db sucessfully closed.

ΠœΡ‹ запускаСм Π²Π΅Ρ€ΡΠΈΡŽ 1.7.0 Π½Π° Debian Stretch с ΡƒΠ·Π»ΠΎΠΌ v6.14.4 ΠΈ Π±Π΅Π· особых настроСк.
ΠœΡ‹ воспроизвСли ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π²ΡƒΡ… нСзависимых установках Etherpad.

Serious Bug security

ВсС 13 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ.
Бпасибо Π·Π° Ρ†Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ,

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, рСбята, просто Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎΠ± отвСтствСнном раскрытии ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… сообщСний Π±Π΅Π· возмоТности Π²Ρ‹Π±ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно опасной.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, рСбята, просто Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎΠ± отвСтствСнном раскрытии ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… сообщСний Π±Π΅Π· возмоТности Π²Ρ‹Π±ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно опасной.

Π₯ΠΌ ... Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ½ ΡƒΠΆΠ΅ Π±Ρ‹Π» раскрыт, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΌΠ΅Ρ€Π·ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π½ΠΈ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Π½Π΅ знаю, ΠΊΠ°ΠΊ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± этом Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ способом. Π’ описании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ упоминаСтся Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΠΎ вопросам бСзопасности. Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π±Ρ‹ я сообщил ΠΎΠ± этом?

Afaik, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° отвСтствСнного раскрытия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π― Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ это Π½Π° etherpad.org ΠΈ Π² readme Π½Π° github.


ΠžΡ‚: Ѐрансуа ΠŸΡƒΠ»Π΅Π½ [email protected]
ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ: понСдСльник, 21 января 2019 Π³., 11:16
ΠšΠΎΠΌΡƒ: ether / etherpad-lite
Копия: Π”ΠΆΠΎΠ½ ΠœΠ°ΠΊΠ›ΠΈΡ€; ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ
Π’Π΅ΠΌΠ°: Re: [ether / etherpad-lite] ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ ΡƒΠ±ΠΈΠ²Π°ΡŽΡ‚ Etherpad lite (# 3502)

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, рСбята, просто Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎΠ± отвСтствСнном раскрытии ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… сообщСний Π±Π΅Π· возмоТности Π²Ρ‹Π±ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно опасной.

Π₯ΠΌ ... Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ½ ΡƒΠΆΠ΅ Π±Ρ‹Π» раскрыт, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΌΠ΅Ρ€Π·ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π½ΠΈ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Π½Π΅ знаю, ΠΊΠ°ΠΊ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± этом Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ способом. Π’ описании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ упоминаСтся Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΠΎ вопросам бСзопасности. Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π±Ρ‹ я сообщил ΠΎΠ± этом?

-
Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ это, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ.
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, просмотритС Π΅Π³ΠΎ Π½Π° GitHub https://github.com/ether/etherpad-lite/issues/3502#issuecomment-456039980 ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΊ https://github.com/notifications/unsubscribe-auth/ AANewII6dbcPV2hlcP4uA5c4OHESwQJuks5vFaK4gaJpZM4X1_tz .

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ? Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π½Π°ΠΌ ΠΎΠ± этом Ρ‡Π΅Ρ€Π΅Π· ...Β». ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ этот выпуск, я ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» нСсколько ΠΌΠΈΠ½ΡƒΡ‚ Π½Π° readme Π½Π° github ΠΈ Π½Π° etherpad.org, Π½ΠΎ Π½Π΅ нашСл Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ иностранный Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ, я ΠΌΠΎΠ³ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ.

ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ ΠΊ свСдСнию. Tnx


ΠžΡ‚: Ѐрансуа ΠŸΡƒΠ»Π΅Π½ [email protected]
ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ: понСдСльник, 21 января 2019 Π³., 14:35
ΠšΠΎΠΌΡƒ: ether / etherpad-lite
Копия: Π”ΠΆΠΎΠ½ ΠœΠ°ΠΊΠ›ΠΈΡ€; ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ
Π’Π΅ΠΌΠ°: Re: [ether / etherpad-lite] ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ ΡƒΠ±ΠΈΠ²Π°ΡŽΡ‚ Etherpad lite (# 3502)

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ? Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π½Π°ΠΌ ΠΎΠ± этом Ρ‡Π΅Ρ€Π΅Π· ...Β». ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ этот выпуск, я ΠΏΡ€ΠΎΠ²Π΅Π» нСсколько ΠΌΠΈΠ½ΡƒΡ‚ Π½Π° github ΠΈ etherpad.org, Π½ΠΎ Π½Π΅ нашСл Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ иностранный Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ, я ΠΌΠΎΠ³ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ.

-
Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ это, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ.
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, просмотритС Π΅Π³ΠΎ Π½Π° GitHub https://github.com/ether/etherpad-lite/issues/3502#issuecomment-456096384 ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΊ https://github.com/notifications/unsubscribe-auth/ AANewFZlv6xtuszRP2CCBwWoDHGgTrFwks5vFdGEgaJpZM4X1_tz .

Π― Ρ‚ΠΎΠΆΠ΅ Π½Π΅ смог Π½Π°ΠΉΡ‚ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Π²Ρ‹ проситС PR Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ https://github.com/ether/etherpad-lite/issues/2499.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² качСствС быстрого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ https://securitytxt.org/ ?

ΠžΡΠΊΠΎΡ€Π±ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ находится Π³Π΄Π΅-Ρ‚ΠΎ здСсь: https://github.com/ether/yajsml/blob/master/server.js#L98

ΠžΡ‚ΠΊΠ°Π· ΠΎΡ‚ отвСтствСнности: я нСдостаточно ΡƒΠΌΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. МнС Π½ΡƒΠΆΠ΅Π½ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ со Π·Π½Π°Π½ΠΈΠ΅ΠΌ Π΄Π΅Π»Π°!

ΠŸΡ€ΠΈΠ²Π΅Ρ‚! НСмного ΠΈΠ·ΡƒΡ‡Π°ΡŽ это сСйчас.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ опасСния ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ SQLi: это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠ΅ΠΉ, ΠΎ Ρ‡Π΅ΠΌ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ эта Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ полСзная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, которая Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ сбой:

/javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define&footlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootlefootle

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π»ΠΈΠ½Ρ‹ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

Π’ настоящСС врСмя ΠΊΠ»ΡŽΡ‡ кСша гСнСрируСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

var cacheKey = Buffer.from(path).toString('base64').replace(/[/+=]/g, '');

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° ΠΊΠ»ΡŽΡ‡Π° кСша контролируСтся Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΏΡƒΡ‚ΠΈ.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΡŽΡ‡ кСша ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π½Π° дискС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° 255 символами. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ Π΅ΡΡ‚ΡŒ ошибка ENAMETOOLONG .

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это, я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ кСша Ρ…Π΅ΡˆΠ΅ΠΌ ΠΏΡƒΡ‚ΠΈ вмСсто вСрсии Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ base64. Π­Ρ‚ΠΎ обСспСчит имя Ρ„Π°ΠΉΠ»Π° фиксированной Π΄Π»ΠΈΠ½Ρ‹.

Π― ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡŽ PR, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сдСлаСт это Π² блиТайшСС врСмя.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, @tomnomnom , это ΡƒΠΌΠ½ΠΎ. Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ кСша ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ зависимыми ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, ΠΏΡ€ΠΈ этом риск столкновСний практичСски отсутствуСт.

Π― ΠΏΠΎΡΠΌΠΎΡ‚Ρ€ΡŽ сСгодня Π²Π΅Ρ‡Π΅Ρ€ΠΎΠΌ.
ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°!

Π‘Π»ΠΈΠ» ΠΏΠΈΠ°Ρ€, ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ спасибо!

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎΠ± этом: ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ nodejs Π½Π°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, придСтся Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ нСдоступности модуля crypto :

Node.js ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ собран Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ криптографичСского модуля. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π²Ρ‹Π·ΠΎΠ² require ('crypto') ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π²Ρ‹Π΄Π°Ρ‡Π΅ ошибки.

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, встроСнныС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΅Π³ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ARM, MIPS, Raspberry PI ΠΈ Ρ‚.ΠΏ.)? Π― Π½Π΅ знаю. ОписаниС Ρ‚Π°ΠΊΠΈΡ… сцСнариСв ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь :

  • запуск нСстандартного ΡƒΠ·Π»Π° Π² срСдС с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ рСсурсами ΠΈΠ»ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ (см. ΡƒΠ·Π΅Π» # 5611 для ΠΈΡ… явной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ этого сцСнария)
  • Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² эмулируСмой срСдС (Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Ρ‚. Π΄.)
  • созданиС ΡƒΠ·Π»Π° ΠΈΠ· источника ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ openssl / crypto ΠΏΠΎ случайной ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ (см. вопрос ΠΎ StackOverflow ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ пост nodejs )

Π’ любом случаС, рСбята ΠΈΠ· TypeScript Ρ€Π΅ΡˆΠΈΠ»ΠΈ эту ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² https://github.com/microsoft/TypeScript/issues/19100 , ΠΈ ΠΎΠ½ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΅Π΅ элСгантным способом Π² https://github.com/microsoft/TypeScript/commit/ 9677b0641cc5ba7d8b701b4f892ed7e54ceaee9a.

Если импортированная ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚Π° Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ Π²ΠΎ врСмя выполнСния, ΠΎΠ½ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ…Π΅Ρˆ-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ djb2 , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слабСС, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΈΡ… случаС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для нашСго случая, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

function djb2Hash(data) {
    const chars = data.split("").map(str => str.charCodeAt(0));
    return `${chars.reduce((prev, curr) => ((prev << 5) + prev) + curr, 5381)}`;
}

console.log(Buffer.from(djb2Hash('This is a 😎 test of the djb2 hash function')).toString('hex'));
// prints 36373536373437333033

Π― Π½Π΅ ΠΏΡ€ΠΎΡˆΡƒ вас Π΄Π΅Π»Π°Ρ‚ΡŒ это, Π½ΠΎ история djb2 Π·Π°Π±Π°Π²Π½Π°: см. Π—Π΄Π΅ΡΡŒ ΠΈ исходноС сообщСниС Π² спискС рассылки Даниэля БСрнстайна ΠΎΡ‚ 1991 Π³ΠΎΠ΄Π°. Π•ΠΌΡƒ Ρ‚ΠΎΠ³Π΄Π° Π±Ρ‹Π»ΠΎ 20 Π»Π΅Ρ‚ .

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ djb2 ΠΏΡ€ΠΈ отсутствии ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ: # 3797.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ