대응 방안
1. 서버 사이드 스크립트 기능 구현
2. 사용자 입력값 형식에 따른 정규 표현식 검증
화이트리스트 방식으로 허용하기
3. 악의적인 문자 검증
4. 기능 제거
[실습3-3] 취약 환경 시큐어 코딩 적용 실습
Ping check 페이지 부분이 취약했으니 이에 대한 시큐어 코딩을 적용해보자.
if(!empty($ip)) {
$result = shell_exec("ping {$ip}");
$result = iconv("EUC-KR", "UTF-8", $result);
$result = str_replace("\n", "<br>", $result);
}
여기서 if문 안에 있는 첫번째 문장이 shell에서 실행하는 것이므로, 그 앞에서 시큐어 코딩 구문을 추가해주어야 한다.
시스템 명령이 실행되기 전에 막아주자.
if(!empty($ip)) {
if(!preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/",$ip)){
echo "<script>alert('정상적인 입력값이 아닙니다.');history.back(-1);</script>";
exit();
}
$result = shell_exec("ping {$ip}");
$result = iconv("EUC-KR", "UTF-8", $result);
$result = str_replace("\n", "<br>", $result);
}
원하는 입력값만 받도록 함수를 설정해주고, (화이트리스트 방식)
그 외의 입력값을 입력받으면 에러 메시지가 출력되도록 코드를 짜주면 된다.
확인해보면 잘 작동되는 것이 보인다.
IP 주소의 형식이 맞지 않으면 경고창이 뜬다.
'웹 해킹 & 시큐어 코딩' 카테고리의 다른 글
웹 해킹 & 시큐어 코딩 (16) (0) | 2025.01.28 |
---|---|
웹 해킹 & 시큐어 코딩 (15) (0) | 2025.01.23 |
웹 해킹 & 시큐어 코딩 (13) (0) | 2025.01.21 |
웹 해킹 & 시큐어 코딩 (12) (0) | 2025.01.20 |
웹 해킹 & 시큐어 코딩 (11) (0) | 2025.01.20 |