Open hyejin56 opened 3 years ago
1.2.1 입력 값 검증 1.2.1.1 Cross site Scripting
[조치방법] 방법 1. htmlspecialchars() 사용 htmlspecialchars() : < , > , & 정도의 문자를 변경 htmlentities() : 모든문자를 변경 -> 한글의 경우에는 깨져서 보임 (그럴경우 htmlentities( $ ,'UTF-8')로 사용) ※(UTF-8외에 EUC-KR은 사용할 수 없음)
방법 2. strip_tags를 사용하여 태그 제거
방법 3. xss_filter 필터링 함수 만들어 사용
1.2.2 부적절한 환경 설정 1.2.2.1 에러처리 미흡
[조치방법]
// 아래와 같이 수정 // 에러페이지 추가
// 조지결과
[조치방법]
CentOs 일 경우
ubuntu 일 경우
//조치 결과
[조치방법] // 회원가입시에 입력받은 아이디를 DB에 저장할 경우 아래와 같이 사용. <? // 회원가입 화면에서 입력받은 비밀번호를 가져옵니다 $user_passwd = $_REQUEST['txtPassword1']; $user_id = $_REQUEST['txtPassword1'];
// 비밀번호를 암호화 합니다 $encrypted_passwd = password_hash($user_passwd, PASSWORD_DEFAULT);
// 비밀번호를 DB 에 저장합니다
$query = " INSERT INTO member ( id, passwd ) VALUES ( '$user_id', '$encrypted_passwd ') ";
?>
// 로그인 화면에서 입력받은 비밀번호를 DB에 저장된 비밀번호와 비교할때 아래와 같이 사용
// $user_passwd 는 로그인시 입력받은 비밀번호
// $db_passwd 는 DB에서 읽어온 암호화된 비밀번호
if ( password_verify($user_passwd, $db_passwd)) {
// 로그인 성공
} else {
// 로그인 실패
}
같은 비밀번호라고 해도 DB에 저장되는 값은 매번 바뀐다는 겁니다.
echo password_hash($user_passwd, PASSWORD_DEFAULT);
하지만 아래와 같이 비교할 때는, DB에 어떤값이 저장되어 있더라도 비교가 가능합니다.
즉, DB정보가 노출되더라도 비밀번호값을 알아내기가 쉽지 않다는 겁니다
if ( password_verify($user_passwd, $db_passwd))
2021-05-26 HCCC Light ESM 구축 사업 웹 보안성심의 지원 요청의 건