XSS 취약점을 방어하기 위해 다음과 같은 조치를 취할 수 있습니다:
ㅇ 입력값 필터링 및 인코딩: 모든 사용자 입력값을 적절히 필터링하고, HTML, JavaScript, URL 등의 콘텐츠로 렌더링될 때 특수 문자를 인코딩합니다.
ㅇ 콘텐츠 보안 정책(CSP) 적용: CSP를 적용하여 스크립트 소스와 같은 콘텐츠를 제한하여 악성 스크립트의 실행을 방지합니다.
ㅇ 프레임워크 보안 기능 활용: 최신 웹 프레임워크의 보안 기능을 적극 활용하여 기본적인 XSS 방어를 강화합니다.
1. 콘텐츠 보안 정책(CSP) 설정
현재 설정된 도메인:
https://ajax.googleapis.com (jQuery 및 jQuery UI 로드)
https://eai.jbnu.ac.kr (자체 서버의 모든 리소스)
https://apis.google.com (Google API)
https://cdn.jsdelivr.net (외부 CDN)
https://maxcdn.bootstrapcdn.com (FontAwesome 및 Bootstrap)
https://fonts.googleapis.com (Google Fonts)
https://fonts.gstatic.com (Google Fonts 관련)
2. 추가 도메인
헤더에 나열된 다른 외부 리소스는 다음과 같습니다:
http://cdn.jsdelivr.net/npm/xeicon@2.3.3/xeicon.min.css
이 경로는 http:// 프로토콜을 사용하고 있습니다. 만약 CSP에 https://cdn.jsdelivr.net을 허용했으므로, CSP 설정에 추가할 필요는 없지만, 보안상의 이유로 https://로 수정하는 것이 좋습니다.
//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/ui-lightness/jquery-ui.css
이 경로는 프로토콜을 지정하지 않았으므로, 브라우저가 http:// 또는 https://를 자동으로 선택합니다. 현재 CSP 설정에 https://ajax.googleapis.com이 포함되어 있으므로 추가 작업은 필요하지 않습니다.
3. CSP 업데이트
따라서 CSP 설정에 추가로 도메인을 넣을 필요는 없지만, 아래와 같이 약간의 최적화가 가능합니다.
<?php
$nonce = base64_encode(random_bytes(16));
?>
<meta http-equiv="Content-Security-Policy" content="default-src 'self';
script-src 'self' 'nonce-<?php echo $nonce; ?>' https://ajax.googleapis.com https://www.myhompage.kr https://apis.google.com;
style-src 'self' https://www.myhompage.kr https://cdn.jsdelivr.net https://maxcdn.bootstrapcdn.com https://fonts.googleapis.com https://ajax.googleapis.com;
font-src 'self' https://fonts.gstatic.com https://maxcdn.bootstrapcdn.com;
img-src 'self' data: https://www.myhompage.kr;
frame-src 'self';
connect-src 'self' https://www.myhompage.kr;
object-src 'none';
report-uri /csp-report;">
'보안이슈' 카테고리의 다른 글
리눅스 서버 보안취약점검 스크립트 (0) | 2022.06.02 |
---|---|
Linux 용 멀웨어(Malware) 스캐너 도구 (0) | 2020.09.23 |
letsencrypt ssl 발급, 추가, 삭제 (0) | 2019.07.24 |
LINUX MALWARE DETECT (0) | 2019.01.22 |
Let’s encrypt 설치 및 운용(CentOS) (0) | 2018.12.11 |
댓글