ΠΡΠΈΠ²Π΅Ρ,
ΠΠ° Π½Π°ΡΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» ΡΠ±ΠΎΠΉ 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.
ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ,
ΠΡΠΈΠ²Π΅Ρ, ΡΠ΅Π±ΡΡΠ°, ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ°ΡΠΊΡΡΡΠΈΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±Π΅Π· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠ±ΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ.
ΠΡΠΈΠ²Π΅Ρ, ΡΠ΅Π±ΡΡΠ°, ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ°ΡΠΊΡΡΡΠΈΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±Π΅Π· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠ±ΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ.
Π₯ΠΌ ... Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ½ ΡΠΆΠ΅ Π±ΡΠ» ΡΠ°ΡΠΊΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΌΠ΅ΡΠ·ΠΊΠΈΠ΅ ΠΏΠ°ΡΠ½ΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ρ Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π·Π°ΠΊΡΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π·Π°ΠΊΡΡΡΡΠΉ ΡΠΈΠΊΠ» ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΏΠΎ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π±Ρ Ρ ΡΠΎΠΎΠ±ΡΠΈΠ» ΠΎΠ± ΡΡΠΎΠΌ?
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.