URI? URL? URN?


보통 인터넷 주소라 하면 URL이라고 많이 알고 있다.

나또한 다른 사람들과와 다르지 않았으나

URI, URL, URN

이 세 종류가 있다는 것을 알게 되었다.

wiki를 참고하자면

URL : Uniform Resource Locator

URN : Uniform Resource Name

URI : Uniform Resource Identifier


우선 공통적인 단어인 Uniform Resource는 정형화 된 자원이라고 해석하고

나머지 단어들이 각각 다르다.


Identifier, Locator, Name

식별자  / 장소  /  이름


URI는 식별자이다.

식별자는 글자로 인터넷 상의 자원을 식별해주는 것으로 생각하면 된다.


URI는 URL과 URN의 상위 개념인데

URI = URL + URN

이라고 생각하면 된다.


URI를 설명하기 전에

URL과 URN의 차이점을 설명해보는 게 나을 것 같다.


URL은 장소, 위치를 나타낸다.

내가 어느 장소로 가면 원하는 자원이 있다는 말이다.


반면에, URN은 이름을 나타낸다.

자원의 고유한 이름(ex) 주민번호 등...)을 나타내는 것이다.


자원을 식별할 때는

장소로 식별할 수도 있고

이름으로 식별할 수도 있다.


즉, URI(식별자)는 URL(장소)와 URN(이름)을 포함한다.


예를 들어 내가 말하는 포켓몬 냐옹이를 찾고 있다고 가정하자

여러 포켓몬 중 말하는 냐옹이는 한 마리이다.

냐옹이가 태초마을에 살고 있다면

태초마을이라는 위치에서 찾을 수 있고

말하는 냐옹이의 등록번호(말하는 냐옹이의 고유한 등록번호)를 가지고 찾을 수 있다.


여기서 태초마을은 URL이라 할 수 있고

등록번호가 URN이라 할 수 있다.

그리고 말하는 냐옹이라는 포켓몬을 식별해주는 태초마을, 등록번호를 모두 URI라고도 말할 수 있다.



To be continued.........




Made by 꿩

'IT > ' 카테고리의 다른 글

MIME 타입  (0) 2018.10.28

# XSS

XSS는 Cross-site Scripting의 약자인데 웹사이트 공격방법 중 기초적인 것에 해당된다.

XSS공격은 웹사이트에 스크립트 코드를 주입시키는 방법인데

html코드를 해석하지 않게 만들면 간단히 방어할 수 있다.


높은 이해를 위해 예시를 들어보자.

XSS 보안에 취약한 게시판이 있다고 보자.


게시판에 글을 등록을 할 때 다음과 같이 스크립트 코드를 집어 넣어 보았다.



이제 게시판에 다시 들어가 보면



자바스크립트 코드가 실행된 것을 볼 수 있다.

이러한 자바스크립트 코드를 실행을 막으려면

EL 밖에 <c:out value=' '/>태그를 씌워서

 자바스크립트 태그가 실행되지 않게 만들고

 글자 그대로 출력되게 하면 된다.



<c:out value='${값}'/>에는 디폴트로 escapeXml옵션이 true로 되어있어

출력 문자열에 HTML 특수문자(예: <, >, &, ' 또는 ") 포함되어 있을 경우

HTML을 해석하지 않고 그대로 출력되도록 해준다.

혹시나 <c:out value=' ${값}' escapeXml = false />로 입력하면

HTML 코드를 그대로 해석해서 내보내주기 때문에 주의할 필요가 있다.


XSS보안을 방어한 게시판은 다음과 같이

자바스크립트 코드가 그대로 출력되어 나온다.



예시를 위해 단순한 alert창을 띄었지만

쿠키에 들어있는 개인정보를 전송하거나

엉뚱한 곳으로 접속하게 만드는 등

악성코드가 심어져 있다면

문제를 일으킬 수 있다.

그러나 이 방법은 워낙 기초적인 거라 대부분 웹사이트들이 막았기에 걱정하지 않아도 된다.



To be continued.........




Made by 꿩

'IT > 보안' 카테고리의 다른 글

[방화벽] 인바운드 & 아웃바운드  (0) 2022.01.31
[Spring] Google reCAPTCHA v3  (6) 2019.07.07
OAuth  (0) 2019.06.17
SSL인증서  (0) 2019.03.21
CSRF  (0) 2018.12.25

# Object  vs Instance vs Class

Java를 처음 공부하면서 객체지향의 원리가 이해가 가지 않았다.

특히, 객체와 인스턴스의 차이는 도저히....

알고보니

클래스는 붕어빵 틀

인스턴스는 붕어빵

객체는 붕어빵이라는 음식이었다.


<클래스>

내가 붕어빵을 만든다고 가정하자.

붕어빵을 만들려면 역시나 붕어빵 틀은 필수템이다.

이것만 있으면 붕어빵을 쉽게 여러개 만들 수 있다.

클래스도 마찬가지이다.

클래스는 붕어빵 틀처럼 설계도라고 생각하면 된다.

설계도 하나로 대량생산을 하는 것처럼

클래스 안에 만들고자 하는 것에 대한 정보를 넣고 객체를 대량생산 하는 것이다.


<인스턴스 & 객체>

클래스는 쉽게 이해가 갔지만 문제는 인스턴스와 객체의 차이가 너무 모호했다.


보통 붕어빵 틀로 붕어빵을 만든다.

붕어빵 틀로 만들어낸 붕어빵을 인스턴스라 하고

객체는 그저 붕어빵을 가리키는 것일 뿐이다.


이 설명만 들어서는 조금 헷갈릴 수 있다.

" 아 붕어빵 먹고싶다."라고 말할 때

붕어빵은 붕어빵을 가리킨다.

이것을 객체라 한다.


인스턴스는 단순히 붕어빵 틀로 붕어빵을 만들어 냈을 때

이 붕어빵을 인스턴스라 한다.

즉, 메모리에 적재된 것을 인스턴스라 하고

객체는 그냥 그것을 가리키는 것이라 생각하면 된다.




To be continued.........




Made by 꿩


'IT > Java' 카테고리의 다른 글

Spring Boot와 JSP  (0) 2019.08.02
추상클래스와 인터페이스  (0) 2018.11.11
다형성  (0) 2018.11.03

+ Recent posts