MS -SQL 테이블 생성
create table usert (
id int identity(1,1) primary key,
name varchar(50) null,
sex varchar(10) null,
memo nvarchar(200) null
);
1. DB 연결 루틴 만들기
dbcon0.asp
<%
' "ODBC 를 사용할 때"
' dsn="aspbasic1dsn"
' dsnid="aspbasic"
' dsnpasswd="aspbasic"
' Set db =Server.CreateObject("ADODB.Connection")
' db.Open("DSN="+dsn +";UID="+dsnid+";PWD="+dsnpasswd)
' ""DBQ를 사용할때
' ""dbcon.asp 파일을 자동으로 찾는 루틴이다. '''
path1=request.ServerVariables("PATH_TRANSLTED")
path2=Split(path1, "\")
i=Unbound(path2)
path3=replace(path1, path2(i), "")
' path3=replace(path3, path2(i-1)+"\,")
' if path2(i-1)="shop" then
' path3 =replace(path3, path2(i-2) + "\", "")
' ElseIf path2(i-1)="admin" then
' path3=replace(path3, path2(i-2),"\", "")
' end If
db_path =path3 + "aspbasic.mdb"
db_path ="c:\inetpub\wwwroot\aspbasic1\aspbasic.mdb"
Set db =Sever.CreateObject("ADODB.Connection")
db.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ="+db_path)
%>
dbcon.asp
<%
dim dbConnect, db '변수 선언
' DB 연결 접속 정보 변수 저장
'dbConnect = "Provider=SQLOLEDB; Data Source=NITRO-PC\SQLEXPRESS;Initial Catalog=macaronics; User id=braverokmc;password=1111"
dbConnect = "Provider=SQLOLEDB; Data Source=CJH-PC;Initial Catalog=braverokmc; User id=braverokmc;password=1111"
' 연결 객체 생성
set db = server.createObject("ADODB.Connection")
' 데이터베이스 접속
db.open dbConnect
'
' sql="select * from usert where id=1 "
' Set RS = db.Execute(sql)
'
' Response.write RS("name")
%>
2. 등록 폼 만들기
inputform.asp
<!--#include file=./include/header.asp -->
<script>
function checkInput(theForm){
if(theForm.name.value.length==0){
alert("이름을 입력하세요.");
theForm.name.focus();
return false;
}
if(theForm.sex.value.length==0){
alert("성별을 입력하세요. ");
theForm.sex.foucus();
return false;
}
return true;
}
</script>
</head>
<body>
<p> </p>
<p class="text-center"><font size="5"><b>등록폼</b></font></p>
<div class="rows">
<div class="col-xs-12 col-sm-12">
<div class="col-xs-3 col-sm-3"></div>
<div class="col-xs-6 col-sm-6">
<form method="post" action="input.asp" onsubmit="return checkInput" class="form">
<table class="table">
<tr>
<th>이름</th>
<td>
<input type="text" name="name" class="form-control" />
</td>
</tr>
<tr>
<th>성별</th>
<td>
<input type="text" name="sex" class="form-control" />
</td>
</tr>
<tr>
<th>메모</th>
<td>
<textarea name="memo" class="form-control" cols="10" rows="10"></textarea>
</td>
</tr>
<tr>
<td colspan="2" class="text-center">
<input type="submit" value="등록하기" class="btn-success" />
</td>
</tr>
<table>
</form>
</div>
</div>
</div>
</body>
</html>
등록 루틴 만들기

header.asp
<%@Language="VBScript" CODEPAGE="65001" %>
<% Response.CharSet="utf-8"
Session.codepage="65001"
Response.codepage="65001"
Response.ContentType="text/html;charset=utf-8"
%>
<html lang="ko">
<head>
<title>macaronics</title>
<meta http-equiv="content-type" content="text/html"; charset="utf-8" >
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 위 3개의 메타 태그는 *반드시* head 태그의 처음에 와야합니다; 어떤 다른 콘텐츠들은 반드시 이 태그들 *다음에* 와야 합니다 -->
<title>macaronics</title>
<!-- 부트스트랩 -->
<!-- 합쳐지고 최소화된 최신 CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<!-- 부가적인 테마 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
<!-- 합쳐지고 최소화된 최신 자바스크립트 -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<!-- IE8 에서 HTML5 요소와 미디어 쿼리를 위한 HTML5 shim 와 Respond.js -->
<!-- WARNING: Respond.js 는 당신이 file:// 을 통해 페이지를 볼 때는 동작하지 않습니다. -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
Injection.asp
Xss 보안 , SQL Injection 보안
<%
Function ReForm (sString , nMaxLen , isNum )
'// Request 로 들어온 변수를 처리한다.
'// sString : 넘겨받는 변수 (string)
'// nMaxLen : 최대 길이 (number) (최대길이를 검사하지 않은경우 0)
'// isNum : 숫자인지 아닌지 (1 : only number , 0 : 숫자판별 안함)
Dim temp
Dim nErr
temp = Trim (sString ) & ""
if isNum = 1 then '숫자판별
if isNumeric (temp) = False then
response.write ( temp & " is Not Number " )
response.End
End if
end if
if nMaxLen > 0 then '최대길이 판별
if len(temp) > nMaxLen then
response.write ( temp & " is over Maxlength " & nMaxLen )
response.end
end if
end if
'// injection 관련 키워드 제거(항목 추가 가능)
temp = Replace ( temp , "'" , "" )
temp = Replace ( temp , "--" , "" )
temp = Replace ( temp , "--, #" , " " )
temp = Replace ( temp , "/* */" , " " )
temp = Replace ( temp , "' or 1=1--" , " " )
temp = Replace ( temp , "union" , " " )
temp = Replace ( temp , "select" , " " )
temp = Replace ( temp , "delete" , " " )
temp = Replace ( temp , "insert" , " " )
temp = Replace ( temp , "update" , " " )
temp = Replace ( temp , "drop" , " " )
temp = Replace ( temp , "on error resume" , " " )
temp = Replace ( temp , "execute" , " " )
temp = Replace ( temp , "windows" , " " )
temp = Replace ( temp , "boot" , " " )
temp = Replace ( temp , "-1 or" , " " )
temp = Replace ( temp , "-1' or" , " " )
temp = Replace ( temp , "../" , " " )
temp = Replace ( temp , "unexisting" , " " )
temp = Replace ( temp , "win.ini" , " " )
ReForm = temp
End Function
Function Check_sql(str)
Dim result_str
SQL_Val = str
SQL_Val = Replace(SQL_Val, ";", " ")
SQL_Val = Replace(SQL_Val, "@variable", " ")
SQL_Val = Replace(SQL_Val, "@@variable", " ")
SQL_Val = Replace(SQL_Val, "+", " ")
SQL_Val = Replace(SQL_Val, "print", " ")
SQL_Val = Replace(SQL_Val, "set", " ")
SQL_Val = Replace(SQL_Val, "%", " ")
SQL_Val = Replace(SQL_Val, "<script>", " ")
SQL_Val = Replace(SQL_Val, "<SCRIPT>", " ")
SQL_Val = Replace(SQL_Val, "script", " ")
SQL_Val = Replace(SQL_Val, "SCRIPT", " ")
SQL_Val = Replace(SQL_Val, "or", " ")
SQL_Val = Replace(SQL_Val, "union", " ")
SQL_Val = Replace(SQL_Val, "and", " ")
SQL_Val = Replace(SQL_Val, "insert", " ")
SQL_Val = Replace(SQL_Val, "openrowset", " ")
SQL_Val = Replace(SQL_Val, "xp_", " ")
SQL_Val = Replace(SQL_Val, "decare", " ")
SQL_Val = Replace(SQL_Val, "select", " ")
SQL_Val = Replace(SQL_Val, "update", " ")
SQL_Val = Replace(SQL_Val, "delete", " ")
SQL_Val = Replace(SQL_Val, "shutdown", " ")
SQL_Val = Replace(SQL_Val, "drop", " ")
SQL_Val = Replace(SQL_Val, "--", " ")
SQL_Val = Replace(SQL_Val, "/*", " ")
SQL_Val = Replace(SQL_Val, "*/", " ")
SQL_Val = Replace(SQL_Val, "XP_", " ")
SQL_Val = Replace(SQL_Val, "DECLARE", " ")
SQL_Val = Replace(SQL_Val, "SELECT", " ")
SQL_Val = Replace(SQL_Val, "UPDATE", " ")
SQL_Val = Replace(SQL_Val, "DELETE", " ")
SQL_Val = Replace(SQL_Val, "INSERT", " ")
SQL_Val = Replace(SQL_Val, "SHUTDOWN", " ")
SQL_Val = Replace(SQL_Val, "DROP", " ")
result_str = removeXSS(SQL_Val)
Check_sql = result_str
End Function
Function removeXSS(get_String)
get_String = Replace(get_String, "&", "&")
get_String = Replace(get_String, "<xmp", "<x-xmo", 1, -1, 1)
get_String = Replace(get_String, "javascript", "<x-javascript", 1, -1, 1)
get_String = Replace(get_String, "script", "<x-script", 1, -1, 1)
get_String = Replace(get_String, "iframe", "<x-iframe", 1, -1, 1)
get_String = Replace(get_String, "document", "<x-document", 1, -1, 1)
get_String = Replace(get_String, "vbscript", "<x-vbscript", 1, -1, 1)
get_String = Replace(get_String, "applet", "<x-applet", 1, -1, 1)
get_String = Replace(get_String, "embed", "<x-embed", 1, -1, 1)
get_String = Replace(get_String, "object", "<x-object", 1, -1, 1)
get_String = Replace(get_String, "frame", "<x-frame", 1, -1, 1)
get_String = Replace(get_String, "grameset", "<x-grameset", 1, -1, 1)
get_String = Replace(get_String, "layer", "<x-layer", 1, -1, 1)
get_String = Replace(get_String, "bgsound", "<x-bgsound", 1, -1, 1)
get_String = Replace(get_String, "alert", "<x-alert", 1, -1, 1)
get_String = Replace(get_String, "onblur", "<x-onblur", 1, -1, 1)
get_String = Replace(get_String, "onchange", "<x-onchange", 1, -1, 1)
get_String = Replace(get_String, "onclick", "<x-onclick", 1, -1, 1)
get_String = Replace(get_String, "ondblclick","<x-ondblclick", 1, -1, 1)
get_String = Replace(get_String, "enerror", "<x-enerror", 1, -1, 1)
get_String = Replace(get_String, "onfocus", "<x-onfocus", 1, -1, 1)
get_String = Replace(get_String, "onload", "<x-onload", 1, -1, 1)
get_String = Replace(get_String, "onmouse", "<x-onmouse", 1, -1, 1)
get_String = Replace(get_String, "onscroll", "<x-onscroll", 1, -1, 1)
get_String = Replace(get_String, "onsubmit", "<x-onsubmit", 1, -1, 1)
get_String = Replace(get_String, "onunload", "<x-onunload", 1, -1, 1)
get_String = Replace(get_String, "<", "<")
get_String = Replace(get_String, ">", ">")
removeXSS = get_String
End Function
Function mSecurity(get_String)
Dim result1, result2
result1=removeXSS(get_String)
result2=Check_sql(result1)
mSecurity=result2
End Function
%>
<!--
SQL Injection 방어 함수 적용
(ReForm 함수 사용)
<%
param1 = ReForm(request.Form("param1"),0,0)
%>
-->
input.asp
<!--#include file=./include/header.asp -->
<!-- SQL Injection 공격 방어 함수 -->
<!--#include file=./include/Injection.asp -->
</head>
<body>
<%
name=mSecurity(request("name"))
sex=mSecurity(request("sex"))
memo=mSecurity(request("memo"))
%>
<!--#include virtual=./asp-shoppingMall/braverokmc/dbcon.asp -->
<%
sql1="insert into usert(name, sex, memo) values('"&name & "','"& sex & "' , '" & memo & "')"
Set rs1=db.Execute(sql1)
%>
<p> </p>
<p class="text-center">등록결과</p>
<div class="rows">
<div class="col-xs-12 col-sm-12">
<div class="col-xs-3 col-sm-3"></div>
<div class="col-xs-6 col-sm-6">
<p class="text-center">다음과 같이 등록되었습니다.</p>
<%
sql2="select * from usert where name='"& name &"'"
Set rs2 =db.Execute(sql2)
%>
<table class="table">
<tr>
<td>이름 :</td>
<td><%= rs2("name") %></td>
</tr>
<tr>
<td>성별 :</td>
<td><%= rs2("sex") %></td>
</tr>
<tr>
<td>메모 : </td>
<td>
<%= rs2("memo")%>
</td>
</tr>
<tr>
<td colspan="2">
<a href="inputform.asp">이전화면으로</a>
</td>
</tr>
</table>
</div>
</div>
</div>
</body>
</html>
목록보기
<!--#include file=./include/header.asp -->
</head>
<body>
<!--#include file=dbcon.asp -->
<p> </p>
<%
id=request("id")
name=request("name")
sex=request("sex")
memo=request("memo")
' 총 레코드 개수'
sql="Select count(*) as totalcount from usert "
Set rs=db.Execute(sql)
' 목록 불러오기
sql2 =" select * from usert order by id asc "
Set DbRec=db.Execute(sql2)
%>
<div class="rows">
<div class="col-xs-12 col-sm-12">
<p><h2 class="text-center">목록 보기</h2></p>
<div class="col-xs-3 col-sm-3"></div>
<div class="col-xs-6 col-sm-6">
<p>레코드 수 : <%= rs("totalcount") %></p>
<p>
<a href="inputform.asp">추가</a>
</p>
<table class="table">
<tr>
<td>번호</td>
<td>이름</td>
<td>성별</td>
<td>메모</td>
</tr>
<%
For i =1 to rs("totalcount")
%>
<tr>
<td><%= DbRec("id") %></td>
<td><%= DbRec("name") %></td>
<td><%= DbRec("sex") %></td>
<td><%= DbRec("memo") %></td>
</tr>
<%
DbRec.movenext
Next
%>
</table>
</div>
</div>
</div>
</body>
</html>













댓글 ( 4)
댓글 남기기