mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-24 17:36:14 -04:00
security: Support proxy with rate limiting and include CI test coverage for nginx rev proxy (#4373)
Previously Etherpad would not pass the correct client IP address through and this caused the rate limiter to limit users behind reverse proxies. This change allows Etherpad to use a client IP passed from a reverse proxy. Note to devs: This header can be spoofed and spoofing the header could be used in an attack. To mitigate additional *steps should be taken by Etherpad site admins IE doing rate limiting at proxy.* This only really applies to large scale deployments but it's worth noting.
This commit is contained in:
parent
dbef630f44
commit
ceb09ce99a
9 changed files with 120 additions and 3 deletions
25
tests/ratelimit/send_changesets.js
Normal file
25
tests/ratelimit/send_changesets.js
Normal file
|
@ -0,0 +1,25 @@
|
|||
try{
|
||||
var etherpad = require("../../src/node_modules/etherpad-cli-client");
|
||||
//ugly
|
||||
} catch {
|
||||
var etherpad = require("etherpad-cli-client")
|
||||
}
|
||||
var pad = etherpad.connect(process.argv[2]);
|
||||
pad.on("connected", function(){
|
||||
|
||||
setTimeout(function(){
|
||||
setInterval(function(){
|
||||
pad.append("1");
|
||||
}, process.argv[3]);
|
||||
},500); // wait because CLIENT_READY message is included in ratelimit
|
||||
|
||||
setTimeout(function(){
|
||||
process.exit(0);
|
||||
},11000)
|
||||
});
|
||||
// in case of disconnect exit code 1
|
||||
pad.on("message", function(message){
|
||||
if(message.disconnect == 'rateLimited'){
|
||||
process.exit(1);
|
||||
}
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue