server 3

TIL 61일차_ChatterBox

오늘은 ChatterBox 스프린트를 진행하면서 advanced 과제인 서버에 어떤 새로운 메시지가 등록된 경우, 브라우저에서 새로고침을 하지 않더라도, 서버에서 계속 메시지를 받아오기 를 구현한 것을 기록해보려 한다. 접근방법 처음에는 단순히 setInterval를 써서 1초마다 새로 렌더하면 되지않을까? 생각했다. 근데 이렇게하면 새로운 메시지가 등록되지 않아도 계속해서 렌더할 뿐만아니라, 전체메시지가 계속 렌더되므로, 메시지창이 깜빡 깜빡 깜빡... 매우 보기 좋지 않았다. id?? 다음으로는, 서버에 POST했을 때 리턴되는 id값을 쓰면 어떨까? 라는 생각을 했다. id값이 변하면, 변한 id의 메시지를 렌더하도록 하는 것이다. 그러나 get했을 때 id정보가 담겨있지 않아서 id로 접근하는것은..

TIL 60일차_ Browser Security: XSS

XSS (Cross-Site Scripting) XSS(Cross-Site Scriptinig) 이란 웹 애플리케이션에서 일어나는 취약점으로, 웹사이트에 스크립트를 삽입하는 공격기법이다. 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취한다. 아래는 채팅을 위한 textarea에 스크립트를 삽입한 상황이다. 일부러 XSS 공격을 허용하기위해서 DOM에서 textcontent가 아닌 innerHTML을 사용했다. 이렇게 의도와다르게 스크립트가 삽입되면 사용자는 다양한 보안상의 위협에 노출된다. 자바스크립트의 활용성이 높을수록, 스크립트를 사용하는 해킹의 활용범위도 넓어지기 때문이다. 따라서 이러한 XSS공..

TIL 58일차_ 클라이언트와 서버

서버는 왜 필요할까 웹/앱을 만들 때, 필요한 정보들은 서버에서 받아온다. 이렇게 생각할 수도 있다. 그냥 모든 정보를 담아서 만들면, 따로 서버에서 리소스를 받아올 필요도 없는데 왜 그러지 않을까? 그러나 그렇게 정보들을 웹/앱에 직접 담으면 많은 문제가 생긴다. 예를들어, 새로운 정보를 업데이트 하려면, 웹/앱 자체를 업데이트하여 버전업해야 하고, '결제'라는 행동은 은행 서버와의 연결이 반드시 필요한 행동이다. 클라이언트-서버 아키텍처 이렇게 리소스가 존재하는 곳(서버)와 리소스를 사용하는 곳(클라이언트)를 분리시킨 것을 2티어 아키텍처, 또는 클라이언트-서버 아키텍처라고 부른다. 클라이언트-서버 아키텍처에서는 클라이언트의 요청이 선행되고, 서버에서 응답이온다. 요청없이 응답이 오는 ..