오래된 자료이긴 한데 1윈팁에 없는거같아 올립니다.
#################################################################################################################
3장 1절 접근통제 취약점
#################################################################################################################
□ 취약한 프로그래밍 예
<HTML>
<HEAD><TITLE> 관리자 페이지 </TITLE>
<SCRIPT language="JavaScript“>
function getCookie(name)
var cname = name +"=";
var dc = document.cookie;
if(dc.length > 0)
begin = dc.indexOf(cname);
if(begin != -1)
begin += cname.length;
end = dc.indexOf(";", begin);
if(end == -1) end = dc.length;
retrun unescape(dc.substring(begin, end));
return null;
function getValue(element)
var value = getCookie(element.name);
if(value != null) element.value = value;
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT language="JavaScript“>
var auth;
auth = getCookie("logged_in");
if(auth != 1) // 인증 성공 쿠키가 없을경우 Main Page로 이동
window.location = "http://victim.com/login.html";
</SCRIPT>
관리자 페이지 내용
=================================================================================================================
□ 안전한 프로그래밍 예
o ASP
<%
If myfunc_userauth(userid, userpw) <> 1 Then 'DB에서 사용자 인증을 처리
Response.write "인증 실패"
Else
If Request.ServerVariables("REMOTE_ADDR") <> "10.10.1.1" Then' 관리자 IP 확인
Response.write "관리자 IP가 아닙니다."
Response.write "인증실패“
LogSave(userid, user_ip, 0)'접속에 실패한 ID 및 IP 기록
Else
Session("logged_in") = 1'인증에 성공했을경우 logged_in 에 1의 값을 셋팅
Session("userid") = userid
Session("user_ip") = Request.ServerVariables("REMOTE_ADDR")
LogSave($userid, $user_ip)'접속에 사용한 ID 및 IP 기록
... 중략 ...
End If
End If
%>
o PHP
<?PHP
@session_start(); //세션 데이터를 초기화
if(!myfunc_userauth($userid, $userpw) || $_SERVER["REMOTE_ADDR'] != "10.10.1.1")
//DB 에서 사용자 인증을 처리, 관리자 IP인지 확인
print "인증 실패";
LogSave(userid, user_ip, 0)'접속에 실패한 ID 및 IP 기록
exit;//인증 실패시 종료
//인증에 성공한 경우 처리 해야 되는 부분
if (!session_is_registered("logged_in"))
$logged_in = 1;//인증에 성공했을경우 logged_in 에 1의 값을 셋팅
$user_ip = $_SERVER["REMOTE_ADDR"];
session_register("logged_in");//인증 결과 저장
session_register("userid");//사용자 ID를 저장
session_register("user_ip");//사용자 IP를 저장
LogSave($userid, $user_ip);// 접속한 사용자 ID 및 IP 기록
... 중략 ...
o JSP
<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.util.* " %>
<%@ page import="java.sql.* " %>
<%
//HttpSession session = request.getSession(true);
String user_ip = request.getRemoteAddr();
// form 에서 사용자 id와 사용자 password를 아래 변수로 전달
if(!myfunc_userauth(userid, userpw) || !user_ip.equals("10.10.1.1"))
//DB 에서 사용자 인증을 처리, 관리자 IP인지 확인
out.println "인증 실패";
LogSave(userid, user_ip, 0)'접속에 실패한 ID 및 IP 기록
else
//인증에 성공한 경우 처리 해야 되는 부분
session.putValue("logged_in","logok");
session.putValue("userid",userid);
session.putValue("user_ip", user_ip);
LogSave(userid, user_ip);// 접속한 사용자 ID 및 IP기록
...
=================================================================================================================
#################################################################################################################
3장 2절 부적절한 파라미터 - 소스
#################################################################################################################
□ ASP
o 취약한 프로그래밍 예
<%
strSize = Request.QueryString("font_size")'사용자로부터 폰트의 크기 입력
Response.Write "<HTML><TITLE>사용자 입력값 검증</TITLE></HEAD>"
Response.Write "<BODY>"
Response.Write "<FONT size=" & strSize & ">글자 크기 조절</FONT>"
' ... 중략 ...
=================================================================================================================
o 안전한 프로그래밍 예
<%
Size = Request.QueryString("font_size")' 사용자로부터 폰트의 크기 입력
Size = CInt(Size)' 입력되는 값을 정수로 형 변환
Response.Write "<HTML><TITLE>사용자 입력값 검증</TITLE></HEAD>"
Response.Write "<BODY>"
Response.Write "<FONT size=" & Size ">글자 크기 조절</FONT>"
' ... 중략 ...
=================================================================================================================
□ PHP
o 취약한 프로그래밍 예
<?PHP
include "./inc/dbconn.inc";// DB 연결 헤더
include $language . "/head.html";// 각 국가 언어별 HTML 출력
$conn = mysql_connect($SERVER, $USER, $PASSWD);
$query = "select count(*) from main_tbl";
// ... 중략 ...
=================================================================================================================
o 안전한 프로그래밍 예
<?PHP
@require_once "./inc/dbconn.inc";// DB 연결 헤더
$default_lang = "korea";// 기본값 설정
if(!file_exists($language."/head.html")) // 파일이 존재하는지 체크
if(eregi(":\/\/", $language)) $language = $default_lang;// URL이 포함되는지 체크
else // 파일이 없는 경우 기본값 설정
$language = $default_lang;
@require_once $language . "/head.html";// 각 국가 언어별 HTML 출력
$conn = @mysql_connect($SERVER, $USER, $PASSWD);
$query = "select count(*) from main_tbl";
// ... 중략 ...
=================================================================================================================
□ JSP
o 취약한 프로그래밍 예
<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.util.* " %>
<HTML><HEAD><TITLE> 사이트 접속 불가 </TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="10;URL=http://victim.com/bye.html">
</HEAD>
<BODY>
<%
out.print("지금 사용하고 계신 ");
out.print(request.getHeader("USER-AGENT"));
out.print(" 브라우져로는 사이트 접속이 불가능 합니다.");
%>
</BODY>
</HTML>
=================================================================================================================
o 안전한 프로그래밍 예
<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.util.* " %>
<HTML><HEAD><TITLE> 사이트 접속 불가 </TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="10;URL=http://victim.com/bye.html">
</HEAD>
<BODY>
<%
String user_agent = request.getHeader("USER-AGENT");
// HTTP HEADER 중 USER_AGENT를 변경 하여 크로스사이트 스크립트 공격하는 것을 차단
user_agent = user_agent.replaceAll("<","<");// HTML tag가 있을 경우 제거
user_agent = user_agent.replaceAll(">",">");
out.print("지금 사용하고 계신 ");
out.print(user_agent);
out.print(" 브라우져로는 사이트 접속이 불가능 합니다.");
%>
</BODY>
</HTML>
=================================================================================================================
#################################################################################################################
3장 3절 취약한 세션 관리 (Cookie Injection) - 소스
#################################################################################################################
□ ASP
o 취약한 프로그래밍 예
'login_ok.asp 사용자 인증 처리를 하는 스크립트
<%
' form 에서 사용자 id와 사용자 password를 아래 변수로 전달
If myfunc_userauth(userid, userpw) <> 1 Then ' DB 에서 사용자 인증을 처리하는 부분
Response.write "인증 실패"
Else
'인증에 성공한 경우 처리 해야 되는 부분
Response.Cookies("logged_in") = 1
' 인증에 성공했을경우 logged_in 에 1의 값을 셋팅
Response.Cookies("userid") = userid
End If
...
%>
user_menu.asp' 사용자 검증이 필요한 페이지
<%
IF Request.Cookies("logged_in") = 1 Then
Response.write "허가된 사용자 입니다."
Else
Response.write "허가되지 않은 사용자 입니다."
End If
%>
=================================================================================================================
o 안전한 프로그래밍 예
‘login_ok.asp 사용자 인증 처리를 하는 스크립트
<%
' form 에서 사용자 id와 사용자 password를 아래 변수로 전달
If myfunc_userauth(userid, userpw) <> 1 Then ' DB 에서 사용자 인증을 처리하는 부분
Response.write "인증 실패"
Else
'인증에 성공한 경우 처리 해야 되는 부분
If Session("logged_in") <> 1 Then
Session("logged_in") = 1'인증에 성공했을경우 logged_in 에 1의 값을 셋팅
Session("userid") = userid
Session("user_ip") = Request.Servervariables("REMOTE_ADDR")
End If
End If
...
%>
‘user_menu.asp 사용자 검증이 필요한 페이지
<%
IF Session("user_ip) = Request.Servervariables("REMOTE_ADDR") AND Session("logged_in") = 1 Then
'인증에 성공한 IP와 사용자 IP를 비교, 인증 여부 비교
'...
Else
Response.write "허가되지 않은 사용자 입니다."
End If
%>
=================================================================================================================
□ PHP
o 취약한 프로그래밍 예
//login_ok.php// 사용자 인증 처리를 하는 스크립트
<?PHP
// form 에서 사용자 id와 사용자 password를 아래 변수로 전달
if(!myfunc_userauth($userid,$userpw)) //DB 에서 사용자 인증을 처리하는 부분
print "인증 실패";
exit;//인증 실패시 종료
//인증에 성공한 경우 처리 해야 되는 부분
setcookie("logged_in", "1");//인증에 성공했을경우 logged_in 에 1의 값을 셋팅
setcookie("userid", $userid);
...
?>
//user_menu.php// 사용자 검증이 필요한 페이지
<?PHP
if($_COOKIE["logged_in"] == 1)
echo "인증 성공: " . $_COOKIE["userid"];
?>
=================================================================================================================
o 안전한 프로그래밍 예
//login_ok.php// 사용자 인증 처리를 하는 스크립트
<?PHP
@session_start(); //세션 데이터를 초기화
// form 에서 사용자 id와 사용자 password를 아래 변수로 전달
if(!myfunc_userauth($userid,$userpw)) //DB 에서 사용자 인증을 처리하는 부분
print "인증 실패";
exit;//인증 실패시 종료
//인증에 성공한 경우 처리 해야 되는 부분
if (!session_is_registered("logged_in"))
$logged_in = 1;//인증에 성공했을경우 logged_in 에 1의 값을 셋팅
$user_ip = $_SERVER["REMOTE_ADDR"];
session_register("logged_in");//인증 결과 저장
session_register("userid");//사용자 ID를 저장
session_register("user_ip");//사용자 IP를 저장
...
?>
//user_menu.php// 사용자 검증이 필요한 페이지
<?PHP
session_start();
if(strcmp($_SESSION['user_ip'], $_SERVER['REMOTE_ADDR']) == 0 && session_is_registered('logged_in'))
//인증에 성공한 IP와 사용자 IP를 비교, 인증 여부 비교
//...
else
게시글 목록
| 번호 | 제목 |
|---|---|
| 15500 |
JavaScript
Cshop님 여기를 봐주세요.
5
|
| 26129 | |
| 29907 |
HTML
날나리 강좌. ㅋ HTML DTD
1
|
| 29906 | |
| 15497 |
Flash
플래쉬 초짜의 질문입니다 ㅠㅠ
2
|
| 15495 |
JavaScript
자바스크립트 자료형을 생각하면 지끈지끈
1
|
| 15486 | |
| 29905 | |
| 29902 |
HTML
[css] 마진 병합
2
|
| 29901 | |
| 29900 | |
| 29899 |
HTML
공백 문자의 병합
|
| 29898 |
HTML
제대로 단위 사용하자
|
| 15483 |
JavaScript
자바스크립트에 대한 오해 - 객체
2
|
| 3556 | |
| 15478 | |
| 15471 |
node.js
nodejs용 iconv (STDIO)
6
|
| 15465 |
JavaScript
중앙정렬만 하면 툴팁 좌표가 어긋납니다.
5
|
| 29892 | |
| 15462 |
PHP
insert
2
|
| 15459 |
MySQL
putty 질문 좀 드리겠습니다
2
|
| 15458 |
Linux
lsync 사용하기
|
| 3554 | |
| 3546 | |
| 15452 |
PHP
php 다른질문~
5
|
| 15448 |
PHP
php간단한 질문좀요
3
|
| 15441 | |
| 15426 |
PHP
insert 질문.
14
|
| 15424 |
Linux
루트비번 재설정
1
|
| 3544 | |
| 3538 | |
| 15423 |
MySQL
다른 테이블로 데이터 복사
|
| 15422 |
MySQL
grant 새 사용자 권한주기
|
| 15419 |
jQuery
체크박스 체크여부에 따라 나타나고 사라지게
2
|
| 15418 |
JavaScript
그누보드 에디터에서 폰트 크기를 포인트로 사용할 수 있나요?
|
| 26116 |
제안서
제안서 입니다.
12
|
| 15417 |
Linux
쉘스크립트 백업 설정
|
| 15415 |
Mobile
옵티머스 LTE 위치파악 오류
1
|
| 15405 |
JavaScript
닫기버튼 흐극 이거 우째할까요
9
|
| 15403 | |
| 15400 | |
| 15398 |
PHP
도움을 부탁드립니다..ㅠㅠ
1
|
| 3530 | |
| 15395 |
PHP
질문좀 드릴께요ㅠㅠ
2
|
| 15394 |
Flash
플래시8 버전 눈내리는 효과 입니다
|
| 15391 |
jQuery
jQure-menu 메뉴 서브포함
2
|
| 3526 | |
| 15368 | |
| 15366 |
JavaScript
광고고정하는법좀 알려주십사 글남겨요
1
|
| 15355 |
jQuery
제이쿼리 질문 어디다하면 좋을까요..
10
|
| 29886 | |
| 15354 |
Linux
리눅스 설치후 selinux 설정하기
|
| 15349 | |
| 29884 |
HTML
이미지를 돌려요 ~
1
|
| 15345 |
node.js
질문~
3
|
| 26103 | |
| 15342 | |
| 15339 |
PHP
PHP 보안문서
2
|
| 15335 | |
| 3521 | |
| 15330 |
node.js
nodejs에서 mysql 사용
4
|
| 26102 | |
| 29883 |
HTML
css3 메뉴
|
| 15327 | |
| 15326 | |
| 15310 |
Mobile
모바일 홈페이지를 가장 빨리만들수 있는 소스~
15
|
| 15300 |
jQuery
easing을 쉽게 보여주는 이미지입니다
9
|
| 15299 |
MySQL
카테고리에 적합한 쿼리 형식
|
| 15298 |
MySQL
mysql 리플리케이션 쿼리스킵
|
| 3518 | |
| 15292 |
node.js
node.js가 갑자기 땡기네요..^^
5
|
| 15290 |
node.js
node v0.2.6 한글 번역
1
|
| 15289 |
node.js
URL파싱
|
| 15286 |
node.js
node.js에서 html불러오기
2
|
| 29882 | |
| 29880 |
HTML
가변 위치에 배너 붙이기
1
|
| 3513 | |
| 24328 | |
| 15281 |
JavaScript
이거으용좀하고싶은데;;;히히
4
|
| 15280 |
Linux
apache에서 유저권한으로 파일 변경하기
|
| 15277 | |
| 29876 | |
| 26096 |
통계자료
웹사이트 성능분석 보고서
5
|
| 3504 | |
| 3496 | |
| 3487 | |
| 3481 | |
| 15275 |
jQuery
jquery 질문입니다 ㅠㅠ
1
|
| 15274 |
Linux
리눅스하드 스탠바이 모드설정
|
| 3475 | |
| 29872 | |
| 29870 |
HTML
[vim] 주석 달기~
1
|
| 3468 | |
| 3466 | |
| 3463 | |
| 3455 | |
| 3452 | |
| 15268 |
node.js
노드 항상 실행 어떻게 하시나요?
5
|
| 15267 |
Mobile
보리안드로이드
|
| 15266 |
Mobile
앱스프레소
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기