88 "net/http"
99 "strings"
1010 "sync"
11+ "crypto/subtle"
1112
1213 "github.com/google/uuid"
1314 "github.com/redis/go-redis/v9"
@@ -140,6 +141,7 @@ func (s *SDTargetsMiddleware) handleGetByGroupName(w http.ResponseWriter, r *htt
140141}
141142
142143func (s * SDTargetsMiddleware ) handleInsert (w http.ResponseWriter , r * http.Request ) {
144+ r .Body = http .MaxBytesReader (w , r .Body , 64 * 1024 ) // 64 KB
143145 var req StaticConfigDocument
144146 var res IDDocument
145147 err := json .NewDecoder (r .Body ).Decode (& req )
@@ -162,6 +164,7 @@ func (s *SDTargetsMiddleware) handleInsert(w http.ResponseWriter, r *http.Reques
162164}
163165
164166func (s * SDTargetsMiddleware ) handleDelete (w http.ResponseWriter , r * http.Request ) {
167+ r .Body = http .MaxBytesReader (w , r .Body , 64 * 1024 )
165168 var req IDDocument
166169 err := json .NewDecoder (r .Body ).Decode (& req )
167170 if err != nil {
@@ -181,6 +184,7 @@ func (s *SDTargetsMiddleware) handleDelete(w http.ResponseWriter, r *http.Reques
181184}
182185
183186func (s * SDTargetsMiddleware ) handleGetByID (w http.ResponseWriter , r * http.Request ) {
187+ r .Body = http .MaxBytesReader (w , r .Body , 64 * 1024 )
184188 var req IDDocument
185189 err := json .NewDecoder (r .Body ).Decode (& req )
186190 if err != nil {
@@ -212,20 +216,12 @@ func (s *SDTargetsMiddleware) HealthCheck(w http.ResponseWriter, r *http.Request
212216
213217func (s * SDTargetsMiddleware ) isApiTokenValid (r * http.Request ) bool {
214218 token := r .Header .Get ("x-api-token" )
215- if token != s .ApiToken {
216- return false
217- } else {
218- return true
219- }
219+ return subtle .ConstantTimeCompare ([]byte (token ), []byte (s .ApiToken )) == 1
220220}
221221
222222func (s * SDTargetsMiddleware ) isSdTokenValid (r * http.Request ) bool {
223223 token := r .Header .Get ("x-sd-token" )
224- if token != s .SdToken {
225- return false
226- } else {
227- return true
228- }
224+ return subtle .ConstantTimeCompare ([]byte (token ), []byte (s .SdToken )) == 1
229225}
230226
231227func (s * SDTargetsMiddleware ) forbiddenResponse (w http.ResponseWriter ) {
0 commit comments