6주차 수요일 수업내용
상세보기를 눌렀는데 아이디를해킹을 당했돠?? 어떻게 그럴수가 있으꽈..? 로컬스토리지는 위험해..
게시물등록의 텍스트 에리어 별로안이쁜뒈.. 이쁜거없낭? Web-Editor
CSS 하이드레이션 이슈
웹에디터 Wysiwyg(위즈위그)
리액트에서 유명한 에디터 라이브러리!
- React Draft Wysiwyg
- react quill
두개가 가장 유명
토스트 유아이 에디터
https://ui.toast.com/tui-editor (노션같은느낌~)
오늘은 리액틀 퀼을 사용해 보게뜜
주의 할 점으로는 리액트퀼의 온체인지는 html 온체인지와 다른 기능으로 리액트 퀼만의 온체인지 이다.
문서가 없다는데...? 리액트퀼안에서 다큐먼트가 없다는듯..
나는 잘못없소 ㅠㅠㅠ
리액트퀼에서 얀데브에서 프리랜더링 하는데 뭐가 없다는듯 ;;
그럼 브라우저에서만 그리라고 지시해주면되게쯰?
.... 안된답...
서버에서 리액트퀼 자체가 임포트 가 안된다...
그렇다면 다이나믹 임폴트!!!
import dynamic from "next/dynamic";
next.js는 리액트위에서 움직이는것
리액트는 프리랜더링을 하진 않음!! 리액트만 사용했으면 이런 이슈도 안생겼을것..
나는 넥스트 쓰니까 다이나믹 임폴트로 이 이슈를 헤쳐냐가야한다!
다이나믹 라우팅을 사용하면
const ReactQuill=dynamic(()=>import('react-quill'),{ssr : false})
요렇게임폴트 가능함.
그럼 작동한다~~
리액트 퀼을 리액트 훅 폼과 사용하려면?
리액트퀼의 온체인지 함수롸 훅폼을 연결해야하는데... 우짤꼬
리액트 훅폼의 setValue를 사용할 수 있다!
근데... 내용을 지우면 아무것도 없는빈칸이 나와야하는데
에디터내용이 없어도 태그들이 전부 지워지는게 아니다..
그럼 빈값인지 아닌지 어찌알꼬??
유즈폼의 모드가 온체인지인데 온체인지함수가 실행될때마다 에러를 바로바로 띄워주기였다
근데 리액트퀼의 온체인지는 어떻게 연결해야할꽈..
퀼의 온체인지에 리액트 훅폼의 trigger 를 사용하면 onchange 대신 실행됬다는 방아쇠를 당겨쥰돠
불러왔을때는 태그들이 태그로 반영이 안됭다.
그래서
dangerouslySetInnerHTML={{
__html: data?.fetchBoard.contents,
}}
요렇게 해주기는 핶는데 먼가 위험해 보인다...!
Cross-Site-Script 사이트를 가로질러 스트립스를 삽입하는 탈취법(XSS 라고도 불림)
이렇게해서 자신의 백엔드로 정보를 해킹해 갈 수도 있다... ㅠㅠ
물론이걸 방지하기위해 리약트 퀼에서 꺽새인식을못하게 되어는 있는뎁 먼가 불안불안..이름부터 데인저러스으
이런식으로 정보빼갈 수 있다(엄청 유명한 방법..) 해당 아이디의 게시물 조회하면
로그인후 보고있는 사람의 토큰이 찍혀버린다...
SetInnerHTML은 굉장히 위험하다
근데 다행히 막는 라이브러리가 있뎅~ DOMPurify
dangerouslySetInnerHTML={{
__html: DOMPurify.sanitize(data?.fetchBoard.contents),
}}
돔퓨리파이로 이렇게 감싸서 하면!...또 프리랜더링 문제..
{typeof window !== "undefined" && (
<div
dangerouslySetInnerHTML={{
__html: DOMPurify.sanitize(data?.fetchBoard.contents),
}}
></div>
)}
요러면 끝!!
그럼 못빼가지롱~!
자주사용되는 해킹기법top10! owasp top 10
우리가자주 접하게되는 해킹기법은
XSS
CSRF 사이트를 가로질러 요청하는것
SQL-injection sql삽입
해킹
자세히 알려면 백엔드 관련 지식이 필요하다.
일단 핵심만!
브라우저에서 로그인화면에 들어가서 이메일 입력하는공간에 이메일 비밀번호 입력,로그인하기버튼누르면
벡에 로그인이라는 에이피아이 요청을 하게됨 그럼백에서 이메일비번 확인하고,
DB에서 맞는지 확인하고 벡에 맞다 하면 백에 엑세스토큰을 넘겨줌.
백엔드 로직이 다음과 같을때
sql인젝션은 비밀번호를 입력하지않고
ex) qqq||1===1 이런식으로 입력하면
로그인이 되어버릴것임...
다행히ORM을 사용하면 방지가 됨.근데 ORM 없던 옛날에는 요 인젝션으로 엄청 많은 사건들이있었다.
또는 ORM이 아닌 다른로직을 사용한 곳은 sql인젝션의 타깃이 될수이똬
CSS 하이드레이션 이슈 hydration issue
컨텐츠색을 블루로 했었는뎁...
프리랜더링하고 브라우저에 전달하고 하이드레이션~
프리랜더링 할때는 보통 태그 위치를 확인함(div,input,span)
현재 서버에서 프리랜더링 할때는 div갯수가 3개여서 빨강 초록,오랜지 이렇게 읽고 브라우저 갔는데
돔퓨리파이 때문에 브라우저에서는 4개가 되니까... 난몰롸 빨강 초록 오랜쥐~~ 이래버린것!
이것이 하이드레이션 이슈!
하이드레이션 이슈를 막기위해 서버에그릴때에도 태그 갯수를 맞춰준다!
Author And Source
이 문제에 관하여(6주차 수요일 수업내용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@iamm71kr/6주차-수요일-수업내용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)