Let me explain how the limits will work:
1.For now there is per worker hashrate limit of 50 MH/s. We can change this and make the limits be per IP rather then per worker but it is not clear that this is the correct way to go as people might have multiple rigs and it is possible to have 50 MH/s from a single rig. Anyway, if we notice that the system is being abused we will turn per IP limits on.
2.Hashrate limitation work the following way. Suppose there is a worker with 100 MH/s hashrate. During each 1 minuter interval our stratum checks how many shares the worker has sent and with what difficulty and if this number is bigger than what 50 MH/s worker can send per minute the 100 MH/s worker will be banned until the end of the interval. For example, if during the first 30 seconds 100 MH/s worker has solved as many shares as 50 MH/s worker would for the remaining 30 seconds the worker would be temporarily banned and every share it sends will be rejected with the following message "Worker is temporarily banned, hashrate is above the limit". These rejected shares will not show up in the pool's statistics (the pool's statistics will only show rejects that are not due to hashrate limits) but will show up in the miner's statistics. That means that 100 MH/s worker will have around 50% rejected shares in his/her statistics that will show up in sgminer but not in the pool's statistics.