근접 문자열 매칭: 유사한 문자열을 찾는 기술
특정 문자(문자열)과 정확히 일치하지 않더라도 비슷한 문자열을 찾아주는 방법
두 문자열의 유사도 척도
@mixin
: 재사용할 그룹을 선언(정의)하는 것@include
: 정의된 @mixin
을 사용@mixin headline {
text-align: center;
span {
color: red;
}
// ...
}
.header {
@include headline
}
@mixin borderStyle($width, $style, $color) {
border: $width $style $color;
}
.buttons {
@include border-style(2px, solid, red);
}
.btn {
width: 200px;
border: none;
colore: red;
}
.order {
@extend .btn;
}
%btn {
width: 200px;
border: none;
colore: red;
}
.order {
@extend %btn;
}
%
를 사용하지 않은 컴파일된 CSS 파일.btn
을 사용하지 않아도 추가됨..btn, .order {
width: 200px;
border: none;
colore: red;
}
%
사용.order {
width: 200px;
border: none;
colore: red;
}
map-get
$color: (
font-primary: #2d3447;
font-secondary: #64e231;
font-focues: #0985e2;
);
body {
background-color: map-get(font-primary);
}
마크 태그를 넣는 과정에서 string으로 배열에 저장했는데 다시 HTML 태그로 render 하는데 어려움이 있었다.
방법1: dangerouslySetInnerHTML
속성
innerHTML
을 사용하기 위한 리액트의 대체 방법cross-site scripting(XSS)
공격에 쉽게 노출될 수 있기 때문에 위험const highlighted: string[] = []
highlighted.push(`<mark>${letters[i]}</mark>`)
// ...
return (
<div dangerouslySetInnerHTML={{ __html: val }} key={i} />
)
방법2: html-react-parser
위의 속성을 사용하기 싫다면 이 라이브러리를 사용해 똑같은 작업을 할 수 있다.
하지만 해당 라이브러리도 XSS
에 안전하지 않다.
Is this XSS safe?
- No, this library is not XSS (cross-site scripting) safe. See #94.
Does invalid HTML get sanitized?
-No, this library does not sanitize HTML. See #124, #125, and #141.
결국 위의 두 가지 방법 중 하나를 사용하고 Sanitize
라이브러리로 데이터를 클린업 한 후 렌더링 해야한다?
sanitizing
은 위험 요소가 될만한 부분을 자체적으로 삭제XSS 공격이란?
신뢰할 수 없는 외부로부터의 데이터가 href 경로, 또는 innerHTML 속성 등 페이지 DOM에 삽입되는 경우가 있다. 특히 사이트에 스크립트 코드를 삽입하게 되면, DOM 트리에 접근할 수 있고 쿠키와 세션 정보에도 접근이 가능해진다. 사용자가 페이지를 사용할 때 미리 심어놓은 스크립트가 실행되는 원리.
https://stackoverflow.com/questions/44643424/how-to-parse-html-to-react-component