Turvatesti kokkuvõte - SilverReinaas/TarkvaraTehnika GitHub Wiki

Rakenduse URLide loetelu:

  • POST: /auth/login, params: LoginData object
  • POST: /addExercise, params: Exercise object
  • POST: /addMeasureLog, params: MeasureLogData object
  • GET: /getUserExercises, params: id
  • GET: /getExerciseById, params: id
  • GET: /getExerciseSets, params: exerciseId
  • GET: /getDaySetsList, params: id
  • GET: /getDaySetsListByPeriod, params: id, start, end
  • GET: /getAllSetsList, params: id
  • GET: /getAllSetsListByPeriod, params: id, start, end
  • GET: /getExerciseSetsToday, params: id
  • GET: /getUnitTypes
  • GET: /getMuscles
  • GET: /getMuscleSetsList, params: userId, start, end
  • GET: /getExerciseStatistics, params: userId, exerciseId
  • GET: /findAllBySetId, params: id

Turvariskide hindamine

SQL injektsioon

Välistatud, kuna meil on kasutusel Spring JPA ja Object-Relational Mapping - mis tähendab, et me ei pea kirjutama ise SQL lauseid, vaid defineerime objekte ja turvalisi SQL-e koostatakse Springi poolt taustal.

Üks näide: kui proovida panna mittenumbriline väärtus ";" eesmärgiga lõpetada eelmine päring ja teha SQL injection, siis see ei õnnestu.

2018-04-24 14:43:56.624 WARN 27012 --- [nio-8080-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Failed to bind request element: org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: ";"

Kasutaja impersoneerimine

On küll võimalik, kuna esimeste rakenduste prototüübi tegemisel me pole keskendanud mittefunktsionaalsetele komponentidele nagu korralik autentimine ja sessiooni hoidmine back-endi pool. Lahendus oleks kasutada unikaalne juhuslik hash/sessiooni ID, et kasutajat autentida.

DDoS rünnak

Keerulisemaid lehte (nt. /exercise-details) laetakse >1 sekundiga. Mingit resursside (piltide jne) cache-imist ei ole. Seega veebileht on lihtsasti rünnatav.