본문 바로가기
728x90
반응형

분류 전체보기278

[Jwt] 토큰 기반 인증(JWT)이란? 토큰 기반 인증(JWT) 사용 이유 [ 세션 기반 인증 시스템의 문제점 ] 1. 세션 사용자가 인증을 할 때, 서버는 이러한 정보를 저장해야 하고 이를 세션(Session)이라고 부른다. 대부분의 경우에는 메모리에 저장하는데, 로그인 중인 사용자가 늘어날 경우에는 서버의 RAM에 부하가 걸리게 된다. 이를 피하기 위해 데이터베이스에 저장을 하기도 하는데, 이러한 방식 역시 데이터베이스에 무리를 줄 수 있다. 2. 확장성 사용자가 늘어나게 되면 더 많은 트래픽을 처리하기 위해 여러 프로세스를 돌리거나 컴퓨터를 추가하는 등 서버를 확장해야 한다. 세션을 사용한다면 세션을 분산시키는 시스템을 설계해야 하지만 이러한 과정은 매우 어렵고 복잡한다. 3. CORS(Cross-Origin Resource Sharin.. 2023. 9. 8.
[SQL] SQL Cookbook - 03.다중 테이블 작업 1. 행 집합을 다른 행 위에 추가하기UNION : 중복된 행을 제거하고 두 개 이상의 쿼리 결과를 하나로 합친다.UNION ALL : 중복된 행을 제거하지 않고 두 개 이상의 쿼리를 결과를 합친다./*EMP 테이블에 있는 부서 10의 사원명 및 부서 번호와 함께, DEPT 테이블에 이쓴ㄴ 각 부서명 및 부서 번호를 표시.*/# UNION ALLselect ename as ename_and_dname, deptnofrom emp where deptno = 10 union all select '---------', null from t1 union all select dname, deptno from dept 2. 연관된 여러 행 결합하기JOIN : 두 개 이상의 테이블을 연결하.. 2023. 9. 8.
[SQL] SQL Cookbook - 02.쿼리 결과 정렬 1. 지정한 순서대로 쿼리 결과 반환하기 # ORDER BYselect ename, job, sal from emp where deptno = 10 order by sal asc 2.  다중 필드로 정렬하기order by 절에서 쉼표로 구분하여 여러 열을 나열하면 제일 왼쪽 열부터 우선순위를 가지고 정렬된다.# ORDER BYselect empno, deptno, sal, ename, job from emp order by deptno, sal desc 3.  부분 문자열로  정렬하기substr() 함수를 사용하여 문자열을 추출해 정렬할 수 있다.# ORDER BY, SUBSTRselect ename, job from emp order by substr(job, length(job)-1) .. 2023. 9. 7.
[SpringBoot] MultipartFile 업로드/다운로드 하기 SpringBoot에서 MultipartFile 저장하고, 다운로드 받기 # File Upload Controller 1. controller에서 요청을 받을 때 MultipartHttpServletRequest 타입으로 request를 받아야 한다. 2. 파일과 같이 request body를 받아야 한다면 String타입으로 받은 후 Gson객체를 이용해 형변환 해야한다. 3. front에서 api요청 시 보낸 파일의 변수명으로 파일을 꺼내온다. > request.getFile("???") @RequestMapping(value = "/registerPrivacyResult", method = RequestMethod.POST) public BaseResult registerPrivacyResult(M.. 2023. 9. 5.
[SQL] SQL Cookbook - 01.레코드 검색 1. 테이블의 모든 행과 열 검색하기별표(*) 문자는 SQL문에서 특별한 의미를 가진다. *를 사용하면 지정된 테이블의 모든 행이 반환된다.select * from 테이블명대화형으로 즉석에서 실행하는 쿼리는 *를 사용하면 좋지만 프로그램 코드를 작성할 때는 각 열을 개별 지정하는게 좋다.성능은 같지만 쿼리에서 어떤 열을 반환하는지 명확하게 알 수 있으며, 다른 사용자가 이해하기 쉽다. 2. 테이블에서 행의 하위 집합 검색하기테이블에서 특정 조건을 충족하는 행만 보기 위해서는 WHERE절로 가져올 행을 지정(필터링) 할 수 있다.select * from emp where deptno = 10 3. 여러 조건을 충족하는 행 찾기여러 조건을 충족하는 행을 반환하기 위해서는 OR 및 AND절과 함께 WHERE절.. 2023. 8. 31.
[Security] XSS 💡 XSS (Cross-Site Scripting) XSS(Cross-Site Scripting)이란 웹 애플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하는 공격 기법이다. 악의적인 사용자가 리다이렉션 스크립트를 주입하기도 하고, 사용자의 쿠키를 탈취하여 세션 하이재킹(Session Hijacking) 공격을 수행하기도 한다. 1. Persistent(or Stored) XSS 지속적으로 피해를 입히는 XSS 공격 기법 웹 애플리케이션에서 XSS 취약점이 있는 곳을 파악하고, 악성 스크립트를 삽입 (게시판) 삽입된 스크립트는 데이터베이스에 저장이 되어 사용자들의 쿠키를 탈취하거나 다른 사이트로 리다이렉션 시키는 공격을 한다. 2. Reflected XS.. 2023. 8. 30.
[Security] XPATH Injection 💡 Xpath란? XPath(XML Path Language)는 W3C의 표준으로 확장 생성 언어 문서의 구조를 통해 경로 위에 지정한 구문을 사용하여 항목을 배치하고 처리하는 방법을 기술하는 언어이다. XML 표현보다 더 쉽고 약어로 되어 있으며, XSL 변환(XSLT)과 XML 지시자 언어(XPointer)에 쓰이는 언어이다. XPath는 XML 문서의 노드를 정의하기 위하여 경로식을 사용하며, 수학 함수와 기타 확장 가능한 표현들이 있다. Ex > en.wikipedia.org de.wikipedia.org fr.wikipedia.org pl.wikipedia.org en.wiktionary.org fr.wiktionary.org vi.wiktionary.org tr.wiktionary.org /w.. 2023. 8. 30.
[Security] Database Backdoors 💡 Database Backdoors란? 말 그대로 ‘뒷문’이라는 의미로 백도어를 통해 정상적인 인증 절차를 거치지 않고, 컴퓨터와 암호 시스템 등에 접근할 수 있도록 하는 방법이다. 백도어는 시스템 설계자나 관리자에 의해 개발 등의 이유로 인해 고의로 남겨진 시스템의 보안 허점이다. Ex> 값을 조회하면서 sql문장을 하나 더 사용해 salary를 update시킨다. 101; update employee set salary=100000 where userid=101 id 입력 칸에 이렇게 입력하게 되면 id가 101인 사람을 조회하면서 salary를 100000으로 업데이트 시킬 수 있다. 2023. 8. 30.
[Security] SQL Injection 💡 SQL Injection SQL인젝션(SQL 삽입, SQL 주입으로도 불린다)은 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격 방식이다. String SQL Injection id를 입력하고 pwd에 ⇒ 'OR''=’ 이라고 입력하면 True로 인식해버려서 로그인이 성공해버리게 된다. SQL query> sql = SELECT * FROM user_info WHERE id=’aaaa’ and pwd=' 'OR''=''; // 'OR''=' Numeric SQL Injection String으로 입력이 불가능한 경우 (selectBox) Burp Suit 프로그램을 이용해 Proxy로 값이 서버로 전송될 때 intercept하여 값을 원하는대로 수정.. 2023. 8. 30.
728x90
반응형