코드네임 JY

[Meteor] parent 함수의 개념 / Meteor 서버 상에서의 보안 본문

백엔드 공부

[Meteor] parent 함수의 개념 / Meteor 서버 상에서의 보안

영재임재영 2020. 2. 21. 00:17

Q1. Button 안에 Image가 왜?

ex_carousel.html

이 코드는 화면상에서 어떻게 보여지냐면

자세하게 보세용

자세하게 보면, button#mybtnimg.card-img-top 보다 큰 것을 알 수 있다.

 

$( ).attr( )

위 코드의 의미는 해당 event를 가지고 있는 요소들을 누르면, 그 요소에 포함된 value 값을 가져오라는 뜻이다.

ex) <button id="btn_click" value="0"> ... </button>

     → 해당 button 태그에 저 위 코드를 적용하면, 버튼을 눌렀을 때

         저 button 태그의 value값 즉, "0" 이라는 값을 가져올 수 있다.

 

다시 돌아와서,

ex_carousel.html

위 코드는 아래와 같이 표현되고,

Button 안에 Image

여기서 내가 button 태그에 있는 value 값을 부르고 싶어서

그냥 $(evt.target).attr('value') 하면 되겠네 라고 생각하고 막상 결과를 보면

 

띠용?

'undefined' 라는 결과가 나오게 된다...ㅠㅠㅠㅠㅠㅠ

왜냐하면, 우리가 클릭한 것은 Button이 아닌 Image기 때문이다... 음...?

 

1. 우리는 Image를 선택했고,

2. 그 결과로 $(evt.target) 에는 Image를 선택했다는 이벤트가 들어가게 되는데,

3. Image에는 value라는 값이 없으니 당연히 undefined 라는 오류가 발생하게 되는 것이었다...

 

따라서 위와 같은 문제를 해결하려면!!

.parent( )의 유무

.parent() 라는 친구를 붙여주면 되는데

이 친구의 역할은 "부모의 것으로 옮겨준다" 라고 생각하면 된다.

 

다시 말해서, Button 안에 Image를 클릭했지만, .parent( ) 를 통해서 Button으로 대상을 옮기는 것이다!!

그러면 위 그림처럼 나오는 결과가 달라지게 되고 내가 원하는 button 태그의 value값을 가져올 수 있게 된다!!

 

Q2. Meteor 서버 상에서의 보안

이걸 내가 왜 궁금해 했냐면

A라는 사용자가 사진을 업로드 할 때, A의 id를 같이 올림으로써

나중에 '사진 상세보기' 챕터에서 A의 id로 이메일을 불러와 나타날 수 있도록 하였다.

하지만 B라는 id로 접속했을 때, A의 id는 확인할 수 있지만 A의 이메일은 확인할 수 없다...

차이를 한번 봐바

0번과 그 외 사용자들의 차이를 봐봅시다. 0번은 emails가 있는 반면, 나머지 사용자들은 나타나지 않는다.

지금 대표님께서 만들어주신 Meteor 플랫폼에서는, 자신의 email 정보만 확인할 수 있도록 하였다.

왜냐하면 맘만 먹으면 다른 사람의 email, 심지어는 비밀번호 등의 개인정보까지 콘솔창에서 확인할 수 있기 때문이다.

물론 처음 서버를 만들 때 이와 같은 조건을 풀어주면 되지만,

보안상의 이유로 자신의 이메일 밖에 확인할 수 없도록 만들어 놓은 것이다...

 

이상 오늘의 질문 끝 ㅎㅂㅎ

Comments