내 개발인생에서 이런 질문 잊을만 하면 꼭 나오는 질문이지. 거의 뭐 1달에 한 번꼴.
웹 사이트 올려놓고서 "전능하신 아카라트여, 영원한 빛으로 날 보호하소서." 하는 것과 같다고 보면 된다.
즉, 포기하라는 거지. 보안 정보는 서버단(자바,닷넷,PHP 등)이 있고, 가장 간편한 저장소는 세션이지.
보안 정보를 웹 사이트에 올리는 것 자체가 빛을 스스로 포기한다는 의미라는 점을 알고 가기 바란다.
공개된 웹 사이트에서 그 어떤 짓을 해도 정보는 공개되기 마련이라는 것이지.
그래서 중요한거나 보여주면 안되는건 전부 백엔드에서 갖고 처리해야하고
프론트에는 보여줘도 상관없는 거만 갖고 있어야댐
당연히 프론트는 걍 백에서 온거 보여주는 역할만 맡아야 댐.
말은 이렇게 해도 아마 대부분 웹개발 강좌나 책은 알게모르게 이렇게 가르쳐 줄 테니까 크게 무서워할 필요는 없음
가장 맘 편한건 백을 api형식으로 작성하면 될듯.
그럼 필요 이상의 데이터를 넘기지 않음.
누가봐도 그렇구나 할만한 데이터만 넘어가고.
jwt나 login데이터를 cookie에 암호화 해서 넣어둔다면 유저가 해킹당하거나 그러면 문제가 되긴 하겠다만 그정도면 다른 방법을 써도 해킹당할 듯..
저도 예전에 만화사이트에서 뜯어보다가 소스 긁는 스크립트 찾은적있음.
근데 보통 제대로된 회사에서 만들고 하면 이런건 이미 감쳐줘요. 소스코드도 개발자 창에 보이는게 다가 아님.
윗분들 말처럼 많은 스택 (풀스택의 경우)엔 그냥 서버에서 렌더링을 다 처리하기 때문에 중요한 정보는 애초에 소스에 올라가지를 않음.
예를들어 회원의 비밀번호가 필요하다 -> 그럼 그걸 그냥 인풋으로 받아서 서버에서 새로운 페이지를 보여주는거지 여기서 실제로 웹페이지가 비번을 가지고 뭘 하면 안됨.
마찬가지로 프론트 백 분리된 웹사이트들도 뜯어보기 쉽지 않아요. 요새 js프레임워크 써서 만드는건 사람이 쓰는 코드와 마지막에 렌더링되는 코드 사이에 꽤 거리가 있기때문에 일단 사람이 뜯어봐도 잘 읽히지가 않고, 이런경우는 소스 스크립트들도 프레임워크에서 숨겨줘요. 한번 사이트 react같은걸로 만들고 뜯어보세요. 님이 만든 펑션이나 함수가 그대로 나오지 않고 minified 된 거대한 자스 파일 하나에서 나올꺼임 (솔직히 찾는것도 인내가 꽤 필요할듯)
약간 번외적인 이야기지만 가끔 자바스크립트랑 서버사이드 언어랑 특정 정보를 php나 jsp사용해서 스크립트에 끼어넣는식으로 코딩하는 사람들도 있던데
다들 위에서 이야기했지만 자바스크립트는 클라이언트에서 노출이 되기 때문에 그렇게 코딩하면 안돼.
상황에 따라서는 스크립트 조작도 가능해서 데이터 그 데이터가 변경되는 식으로 서버쪽 공격당할수도 있어.
프론트엔드 서버가 있고 백엔드 서버가 있어요. 프론트엔드 서버는 님이 보는 걸 담당하는 코드와 자료를 보내줍니다. 이게 F12 개발자 탭으로 볼 수 있는 코드와 자료에요. 님의 브라우저가 프론트엔드 서버로부터 프론트엔드 프로그램 (편의상) 을 받아와 돌리면서, 필요한 자료를 백엔드 서버에 요청합니다. 그러면 백엔드 서버는 딱 그 요청에 맞는 자료만 보내줍니다. 예를 들자면 백엔드 서버는 백엔드 서버의 코드는 보내지 않고 댓글 정보 게시글 정보와 같은 정보를 보내주고, 또 유저가 추가를 하면 그걸 받아서 데이터베이스를 업데이트 합니다.
물론 백엔드에 구현을 해야하는 것들을 프론트엔드에서 하는 잘못된 웹사이트도 있을 수 있고 또 결국 로그인 정보를 담은 토큰을 쿠키던 세션이던 보안 위험에 노출될 수 있는 유저의 브라우저에 저장해야 하는등 위험은 항상 존재하긴 합니다.