inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

토비의 스프링 부트 - 이해와 원리

스프링 spring get/post 보안 관련 문의 드립니다

599

주아아빠

작성한 질문수 33

0

스프링 spring 보안 관련 문의 드립니다

 

토비님 안녕하세요 ~

여전히 공공기관 프로젝트에 참여 중 인데요

스프링 보안 관련 해서 문의 드립니다

현재 기 구축되어 있는 프로젝트 소스에서 고도화 및 신규 프로그램 개발 중입니다

그러던 중 공공기관 관리자 담당자가

보안 관련 지적을 하셨습니다

 

-.공무원 담당자 지적사항 내용

 

https://www.url.com?paramA=파라미터a&paramB=파라미터b

 

=> 현재 일반 조회는 스프링 겟 매핑 방식 으로 하고 있습니다

사이트를 사용하는 일반 유저가

브라우저 url 주소창에 파라미터만 수정해가면서 조회 하면

조회 결과가 달라져 나오는데 이거 보안상 문제 있는거 아니냐고 따져 지적을 합니다

 

기 구축되어 있는 소스에는 request 할때

따로 인코딩/디코딩이 되어 있지 않는데

토비님이 경험해오신 스프링 get/post 보안관련 지적 사항이 나오지 않을려면

저희 프로젝트에서 어떻게 전체 소스(js, java ) 에 어떤 보안 관련 기능을 추가 할 수 있을까요?

 

참고로 구글도 검색어에 '토비' 라고 치고

개발자 도구 열어서 payload 보면 한글 그대로 넘어가던데

이게 공무원 담당자가 보안 관련 지적 하는게 맞는 건지도

저는 모르겠습니다

한가하실 때 시간 나시면 조언 부탁 드립니다

감사합니다 수고하세요~

 

 

김동희 드림

 

#토비

#토비의스프링

#spring

#스프링

#보안

#get

#post

#parameter

#파라미터

#문제

spring spring-boot spring-jdbc

답변 1

1

토비

파라미터를 쓴다고 그것만으로 보안에 문제가 있다고 단정할 수 없습니다.
중요한 건 파라미터에 해당하는 정보를 조회하는 권한이 현재 유저에게 있는가(비로그인 또는 로그인 사용자 모두)입니다.
파라미터를 암호화 해서 조작을 못하게 하면 쪼금 낫겠지만, 어짜피 암호화가 브라우저 자바스크립트에서 일어나면 그 코드를 가지고 얼마든지 다른 파라미터를 만들어낼 수 있습니다.

중요한 건 조회권한에 대한 체크가 필요한지 여부이지 파라미터를 URL에 노출하는 것 자체가 아닙니다. 구글을 비롯한 수많은 서비스가 url에 조건이 다 담겨져있다고 해주세요. 다만 사용자가 만든 건 아니고 고정된 링크로 들어간 경우, 위에서 얘기한대로 서버에서 조회권한을 체크할 필요가 있는지, 있다면 하고 있는지가 핵심입니다.

0

주아아빠

토비님 답변 감사드립니다!!

참여 중인 프로젝트가 네이버 같은

정부 포탈사이트 성격인데

로그인후 마이페지에 본인정보가 아닌

파라미터를 바꿔가면서 조회하면

조회가 되게 잘못 되어 있어서 ㅠㅠ

토비님이 조언 해 주신 대로 본인과 연관된 권한이있는지

여부에 따라 제한을 거는 로직은 적용 하도록 하겠습니다

 

추가질문이 있습니다

1.토비님은 실무 수많은 프로젝트를 하셨을텐데요

조회성 request ajax,axios,fetch 등을사용하시면서

get/post매핑을 혼용해서 사용하시나요?

아니면, 모든 request 를 post 로 만 작업하시나요?

 

2.토비님이 금융 은행권이나 프로젝트를 만약 하셨다면

브라우저 url 에 request 시 파라미터표시를 막게 post 로만 작업하나요?

( 개발자입장에서 브라우저 개발자 도구를 이용해서

넘어가는 파라미터 payload 를 볼 수 없다면,

로컬 클라이언트 환경에서 테스트 디버깅이 너무 어려울거같습니다

자바 컨트롤러에서 다 찍어봐야 하니..)

 

3.실제 프로젝트를 하시면서

request 시 파라미터를 암호화 해달라는

프로젝트 요건을 경험하신적이 있으신지요?

 

매번 너무 친절하고 자세히 설명해 주셔서 고맙습니다

푹 쉬세요^^

 

0

토비

  1. 프로젝트마다 다릅니다.

  2. 프로젝트마다 다릅니다.

  3. URL에 넣는 거 말고 body로 오는 경우는 보안이 매우 중요한 금융 서비스 개발 일부에는 있습니다.

0

주아아빠

토비님 답변 감사합니다 좋은하루 보내세요!!

11강에서 cmd에서 spring shell에 $ init 하면 Fail 메세지

0

76

2

TestRestTemplate 을 통해 테스트 실행시 웹 요청 정보가 콘솔에 표시되지 않습니다.

0

85

1

섹션7. 자동구성 정보파일분리 강의 질문(@MyAutoConfiguration 붙힌 이유)

0

202

2

WebApplicationContext를 DispatcherServlet에 this로 넘기는 것

0

279

2

인프라 빈 구성 정보의 분리에서 EnableMyAutoConfiguration 질문드립니다.

0

211

2

질문드립니다.

0

233

2

spring boot 3.3.7로 학습중입니다.

0

371

2

Serverproperties 객체 생성 후 @Impor 어노테이션 사용 이유 용도

0

162

2

spring start io 에서 이제더이상 2.x버전은 지원하지 않는 것 같습니다.

1

298

2

Springboot 3.2 이상에서 파라미터 추론관련

0

918

4

binding error

0

222

3

Arrays.copyOf 메서드의 타입 세이프

1

156

2

MyOnClassCondition에 있는 matches method의 Invoke 횟수

1

233

3

인용구의 출처가 궁금합니다.

0

259

1

프로퍼티 빈의 후처리기 도입 AnnotationUtils의 사용

0

236

2

SimpleCacheConfiguration과 빈 등록

0

169

2

MyAutoConfigImportSelector 에서 생성자로 ClassLoader를 주입받을 수 있는 점

0

244

1

IntelliJ project jenerator spring initailizr

0

150

1

강의 자료 레퍼지토리에 업로드

0

216

1

강의자료

0

388

1

Hikari 라이브러리가 없으면 오류가 나는거 아닌가요

0

314

2

Tomcat 포트 프로퍼티 미설정시 랜덤 포트 설정 문의

0

476

5

@Import 로 Bean을 등록해야하는 기준이 뭔지 궁금합니다.

0

343

2

application.properties파일내 프로퍼티 이름

0

214

1