728x90
300x250

[ASP.NET] 경고 없이 열린 창 닫기



Fig 1) 알림창, 지금 보고 있는 웹 페이지 창 닫기

Javascript의 window.close() 명령을 사용하면 보통 위의 그림과 같이 경고 문구가 실행됩니다.
이와 같은 것을 방지하고 종료가 될 수 있도록 하는 방법을 소개하고자 합니다.


1. 결과물

 

 


2. 구현

1. 링크 버튼 하나를 만듭니다.

2. 소스 코드

        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            ClientScriptManager sm = Page.ClientScript;
          string script = "<script>window.opener='nothing';window.open('','_parent','');window.close();</script>";
            sm.RegisterStartupScript(this.GetType(), "sm", script);
        }


* (참고) Javascript 코드

<script>
    window.opener = 'nothing';
    window.open('', '_parent', '');
    window.close();
</script>

이와 구현하면 경고 창 없이 C#에서 현재 창을 종료할 수 있습니다.

반응형
728x90
300x250

[Windows 2008 R2] IIS 7.5 ASP.NET 4 사용하기

System.Web.Routing을 이용하여 만든 프로젝트가 운 나빴으면 동작하지 않을 뻔해서 기록으로 남깁니다.


정리 1)

403 - 사용 권한 없음: 엑세스가 거부되었습니다.

제공한 자격 증명을 사용하여 이 디렉토리 또는 페이지를 볼 수 있는 권한이 없습니다.

403 오류는 파일이 없거나 디렉토리가 사용거부되었을 때 반응합니다.

정리 2)
(1) ASP.NET 4가 IIS 7.5에 설치되지 않았을 때
-> .NET Framework 4를 설치 후에 IIS 7.5 설치가 가장 이상적인 방법
(2) 응용 프로그램 풀이 .NET Framework 4가 아닐 때
-> .NET Framework 2를 .NET Framework 4로 변경
(3) 관리되는 파이프라인 모드 통합으로의 선택이 아닐 때
-> Classic 모드는 뭔가 부족합니다.
    (정확히 쓰고 싶은 데 자료 요약이 아직 덜 된 상태라서 연구 후에 다시 수정하겠습니다.)
(4) 응용 프로그램 풀의 시작 여부 확인
(5) 응용 프로그램 풀 설정 문제
    (ASP.NET v4.0으로 설정)

정리 3) .NET Framework 4 - ASP.NET 4 IIS 설치
%windir\Microsoft.NET\Framework\v4.0.30319\aspnet-regiis.exe -i
%windir\Microsoft.NET\Framework64\v4.0.30319\aspnet-regiis.exe -i

참고) 응용 프로그램 풀이란?
응용 프로그램들의 집합이라고 보시면 됩니다. IIS 사이트가 응용 프로그램이라고 보시면 됩니다.


구성 여부 확인하기

Visual Studio.NET에서 ASP.NET MVC 2 웹 응용 프로그램을 생성합니다.


이것으로 IIS에 갱신하면 작동 여부를 확인할 수 있습니다.


재미있는 정보

MVC 웹 응용 프로젝트의 global.asax를 잘 가져다 쓴다면 기존에 작업했던 프로젝트(Routing 기능만 되어 있는 프로젝트)에 부담 주지 않고 만들 수 있습니다.


글을 쓰면서 독자에게 한 마디

저는 IIS가 잘 안 돼서 깔고 지우고 3번 정도 했으니 경우에 따라 막노동할 가능성이 있습니다.
IIS를 제거해도 웹 사이트 구성은 남아 있으니 걱정하지 마시기 바랍니다.
반응형
728x90
300x250

[ASP.NET 4] RouteMap 기술 - URL 단축하기 + 매개변수 처리

ASP.NET Framework 4에 와서 Routing 기술은 더욱 강화되었습니다.
IIS 서버 기술 Rewrite에서 벗어나 완전한 Routing 기술을 제공합니다. URL Routing Process는 다음과 같이 동작합니다.



Figure 1) URL Routing Processing


1. 왜 URL Routing을 도입해야 하는가?

첫째로는, 사용자가 기억하기 좋은 어휘로 전환할 수 있습니다.
둘째로는, 주소가 간결해집니다.
셋째로는, 웹 사이트 구조가 가상화됩니다.
(즉, 물리 주소의 노출이 줄어듭니다.)
넷째로는, 해킹 가능한 상태에서 벗어나게 해줍니다.


2. ASP.NET 4.0에서의 URL Routing


ASP.NET 4.0은 우리에게 메커니즘을 라우팅 전체 URL을 처리하는 단순하고 강력한 방법을 제공합니다.
앞에서 설명한 대로, 라우팅 URL을 제공하기 위해 ASP.NET은 이제 수많은 클래스를 갖춘 방법 중 여러 쉽게 물리적 파일과 URL을 단순하게 사용할 수 있도록 기능을 제공합니다. 우리는 Framework 4의 라이브러리를 사용하여 적용할 수 있습니다.



Figure 2-1) ASP.NET 4.0 URL Routing 흐름

이쯤에서 알아야 할 구현에 대한 구조는 정리하겠습니다.
서버 관리자와 프로그래머가 동시에 알아야 하는 ASP.NET의 구현구조에 대해서는 제외하였습니다.


3. 구현

 번호 파일명 매개변수  URL Routing 주소 
 1 index.aspx Bookstore
 2 index.aspx name Bookstore/name
 3 index.aspx name, age  Bookstore/name/age

[솔루션 파일 구성]
index.aspx
web.config
Global.asax

Global.asax 코드


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
using System.Web.Security;
using System.Web.SessionState;
namespace WebApplication1
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            RouteTable.Routes.MapPageRoute("StoreRoute1", "BookStore", "~/index.aspx", false);
            RouteTable.Routes.MapPageRoute("StoreRoute2", "BookStore/{name}", "~/index.aspx", false);
            RouteTable.Routes.MapPageRoute("StoreRoute3", "BookStore/{name}/{age}", "~/index.aspx", false);
        }
        protected void Session_Start(object sender, EventArgs e)
        {
        }
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
        }
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
        }
        protected void Application_Error(object sender, EventArgs e)
        {
        }
        protected void Session_End(object sender, EventArgs e)
        {
        }
        protected void Application_End(object sender, EventArgs e)
        {
        }
    }
}

참고)

'RouteTable.Routes.MapPageRoute("StoreRoute2", "BookStore/{name}", "~/index.aspx", false);'만 가지고 출력한다고 가정했을 때, http://localhost:포트번호/BookStore/{name}으로 접속할 수 있습니다.
단, 하위 주소인 http://localhost:포트번호/BookStore로 접속할 수 없습니다.

이 예제에서는 그러한 것을 보완한 예제를 설명하였습니다.

index.aspx 코드


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="WebApplication1.index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="sample1" Text="Null" runat="server"></asp:Label><br />
        <asp:Label ID="sample2" Text="Null" runat="server"></asp:Label>
        <br />
        <asp:HyperLink ID="text" runat="server" NavigateUrl="~/Bookstore/Cakeon/aaa" Text="야호"></asp:HyperLink>
    </div>
    </form>
</body>
</html>



index.aspx.cs 코드


protected void Page_Load(object sender, EventArgs e)
{
            string name = Page.RouteData.Values["Name"] as string;
sample1.Text = name;
string age = Page.RouteData.Values["Age"] as string;
sample2.Text = age;
}




4. 동작 화면




5. 참고자료(Reference)

1. http://www.codeproject.com/KB/aspnet/asp_net4_0_URLRouting.aspx, 접속일자 2011-01-28

반응형
728x90
300x250

[ASP.NET] 웹 서비스 구현 하기(Ajax) - JQuery(JSON)으로 호출 - Hello World

앞서 작성한 '[ASP.NET] 웹 서비스 구현 하기(Ajax) - Javascript로 호출 - Hello World'에 이어서 JQuery(JSON)을 이용하여 데이터를 가져오는 방법에
대해 소개하겠습니다.


1. 보충

그 전에 앞서 이전에 소개해드린 강좌에서 빠진 내용을 하나 소개하겠습니다.
매개 변수입니다.

function chHelloWorld2() {
        WebApplication1.WebService1.HelloWorld2($get("txtName").value, OnSuccess);
}

이 부분에서 $get("txtName").value, OnSuccess가 있습니다.

Web Service에서 실제로 구현된 코드는 아래와 같습니다.

 [WebMethod]
public string HelloWorld2(string s1)
{
       return "Hello World" + s1;
}

자바 스크립트 부분을 보충하자면 아래와 같이 정의할 수 있겠습니다.
네임스페이스.클래스.함수(매개 변수1, 매개 변수2, …, 매개 변수n, OnSuccess, OnFailure)
(Parameters: ControlId,Method name,Parameter1,Parameter2...n,CallbackMethod)



두 개의 입력을 받아서 출력하려면 웹 서비스를 다음과 같이 수정할 수 있습니다.

 [WebMethod]
public string HelloWorld2(string s1, string2)
{
       return "Hello World" + s1;
}

물론 클라이언트 부분에서도 수정해줘야 합니다.
Input(HTML 사용자 컨트롤)이 txtName1, txtName2라고 가정합니다.

function chHelloWorld2() {
        WebApplication1.WebService1.HelloWorld2($get("txtName1").value, $get("txtName2").value, OnSuccess);
}


2. JSON을 이용한 데이터 받기



위의 예제처럼 Alert을 이용하여 출력하는 예제입니다.

1. 솔루션 구성



WebService1.asmx과 index.aspx은 Visual Studio에서 생성할 수 있지만, 나머지 이상한 파일들은 별도로 내려받아야 합니다.

jquery-ui-1.8.8.custom.zip

Jquery 홈페이지(http://www.jquery.com)에서 내려받으실 수 있습니다. 귀찮으신 분들은 첨부된 파일을 내려받으시면 됩니다.

2. WebService1.asmx 설정 하기

[WebService1.asmx.cs]


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace WebApplication1
{
    /// <summary>
    /// WebService1의 요약 설명입니다.
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // ASP.NET AJAX를 사용하여 스크립트에서 이 웹 서비스를 호출하려면 다음 줄의 주석 처리를 제거합니다.
    [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {
        [WebMethod]
        public string HelloWorld3(string s1, string s2)
        {
            return s1 + " " + s2;
        }
    }
}


[WebService1.asmx]

<%@ WebService Language="C#" CodeBehind="WebService1.asmx.cs" Class="WebApplication1.WebService1" %>

3. Index.aspx 파일 설정 하기

[index.aspx]


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="WebApplication1.index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="js/jquery-1.4.4.min.js" type="text/javascript">
    </script>
    <script src="js/jquery-ui-1.8.8.custom.min.js" type="text/javascript">
    </script>

    <script language="javascript" type="text/javascript">
        function HelloQuery() {
            $.ajax({
                type: "POST",
                url: "
http://localhost:50000/WebService1.asmx/HelloWorld3",
                data: '{"s1":"' + $get("txtName1").value + '", "s2":"' + $get("txtName2").value + '"}',
                processData: false,
                contentType: "Application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    alert(data.d);
                }
            });
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input name="txtName1" id="txtName1" type="text" />
        <input name="txtName2" id="txtName2" type="text" />
        <a href="#" onclick="HelloQuery()">TEST</a>
    </div>
        <asp:ScriptManager runat="server">
            <Services>
                <asp:ServiceReference Path="~/WebService1.asmx" />
            </Services>
        </asp:ScriptManager>
    </form>
</body>
</html>

http://localhost:50000/WebService1.asmx/HelloWorld3

선언된 파일의 주소를 모르시면 본인이 만드신 ASMX파일을 접속하셔서 확인하셔도 됩니다.

* 구문 확대해서 살펴보기

data: '{"s1":"' + $get("txtName1").value + '", "s2":"' + $get("txtName2").value + '"}',


data : ' { " 매개변수1 " : " '  +  $get("클라이언트 input name 값").value + ' " , 
    " 매개변수2 " : " '  +  $get("클라이언트 input name 값").value + ' " ,                            


             " 매개변수n " : " '  +  $get("클라이언트 input name 값").value + ' " } '

 
ex) 매개 변수가 하나일 때

data:'{"s1":"' + $get("클라이언트 input name 값").value + '"}'



3. 맺는글

사용자 환경에 맞게 적절히 연구하시어 잘 사용하시기 바라는 마음으로 글을 정리해봅니다.
아무쪼록 Jquery를 활용하는 것과 웹 서비스의 Hello World 글을 이것으로 정리합니다.

반응형
728x90
300x250

[ASP.NET] 웹 서비스 구현 하기(Ajax) - Javascript로 호출 - Hello World

ASP.NET의 웹 서비스는 XML, SOAP 등 산업에서 사용하는 여러 통신 프로토콜을 통합한 하나의 프로토콜이라고 볼 수 있습니다.
자세한 설명은 Microsoft 홈페이지를 참고하시기 바랍니다.

웹 서비스는 웹에서 HTTP 요청을 수행하여 클라이언트 응용 프로그램에서 호출할 수 있는 웹 서버의 구성 요소입니다. ASP.NET을 사용하면 사용자 지정 웹 서비스를 만들거나, 기본 제공 응용 프로그램 서비스를 사용하거나, 클라이언트 응용 프로그램에서 이러한 서비스를 호출할 수 있습니다. 다음 설명서 순서에 따라 살펴보면 관련 항목을 보다 쉽게 검색할 수 있습니다.

MSDN - ASP.NET 웹 서비스 中

참고 자료 : http://msdn.microsoft.com/ko-kr/library/t745kdsh.aspx


이 프로토콜을 활용하여 웹 서비스를 구현하는 방법에 대해서 실습해보겠습니다.

1. 구현 결과



2. 구현하기

1. 솔루션 구성하기



빈 ASPX 파일 하나 두고 웹 서비스를 하나 생성합니다.

2. WebService.ASMX의 Header라고 불리는 태그 보기



WebService1.asmx를 오른쪽 버튼을 열면 `태그 보기(K)`가 있습니다.
클릭합니다.



위와 같이 생겨 있음을 보실 수 있습니다.

(중요)
'Class' 항목은 네임스페이스와 클래스를 지정하는 중요한 것이므로 WebService1.asmx.cs 파일에서 설정할 때 같게 해주어야 합니다.

3. ASMX.CS 파일 보기
보통 WebService1.asmx를 더블 클릭하면 보실 수 있습니다.

4. 구현 하기

WebService1.asmx 파일


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebApplication1
{
    /// <summary>
    /// WebService1의 요약 설명입니다.
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // ASP.NET AJAX를 사용하여 스크립트에서 이 웹 서비스를 호출하려면 다음 줄의 주석 처리를 제거합니다.
    [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        public string HelloWorld2(string s1)
        {
            return "Hello World" + s1;
        }
    }
}



Index.aspx 소스(CS 파일 아님)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="WebApplication1.index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">
        function chHelloWorld() {
            WebApplication1.WebService1.HelloWorld(OnSuccess);
        }
        function chHelloWorld2() {
            WebApplication1.WebService1.HelloWorld2($get("txtName").value, OnSuccess);
        }
        function OnSuccess(result) {
            alert(result);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <a href="#" onclick="chHelloWorld()">TEST</a>
        <br />
        <input name="txtName" id="txtName" type="text" />
        <a href="#" onclick="chHelloWorld2()">TEST</a>
    </div>
        <asp:ScriptManager runat="server">
            <Services>
                <asp:ServiceReference Path="~/WebService1.asmx" />
            </Services>
        </asp:ScriptManager>
    </form>
</body>
</html>

 

3. 참고자료(Reference) 
1. http://alexandershapovalov.com/how-to-call-wcf-services-from-javascript-jquery-and-aspnet-ajax-39/

반응형
728x90
300x250

[ASP.NET] CS 코드(C# 코드)에 자바스크립트 구현하기

ASP.NET에서 서버 측 코드와 클라이언트 측 코드가 분리되었습니다. Web2.0의 개발 추세에 맞게 적용해놨습니다.

물론 현재의 ASP.NET은 Web 3.0 추세에 맞게 발전되어가고 있습니다.
아래의 그림 결과와 같이 출력하는 예제를 구현하도록 하겠습니다.

1. 구현 결과




2. 작성하기

1. 빈 웹 프로젝트 만들기



ASP.NET 빈 웹 프로젝트를 만듭니다.

2. 빈 index.aspx 페이지 만들기

빈 페이지를 만듭니다.

3. 실제 코드 구현하기


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
      {
            ClientScriptManager sm = Page.ClientScript;
            string script = "<script>alert('" + "태스트" + "');</script>";
            sm.RegisterStartupScript(this.GetType(), "sm", script);
      }
    }
}

반응형
728x90
300x250

[ASP.NET] 내장 암호화(HashPasswordForStoringInConfigFile) 기법 사용하기 - 복호화(X)

내장 암호화 전 게시물에 이어 이번에는 복호화(Decrypt)가 불가능한 기법에 대해 소개하겠습니다.
라이브러리의 물리 경로는 System.Web.Security.FormsAuthenication.HashPasswordForStoringInConfigFile에 있습니다.
이 라이브러리의 형식은 다음과 같습니다.

public static string HashPasswordForStoringInConfigFile(string password, string passwordFormat)



1. string password 세부항목

string password는 부호화시킬 대상의 암호를 문자열로 입력하면 됩니다.
string passwordFormat은 System.Web.Configuration.FormsAuthPasswordFormat 열거형 값 중 하나를 나타내는 String입니다.

참고1) System.Web.Configuration.FormsAuthPasswordFormat 열거형 값

string password는 부호화시킬 대상의 암호를 문자열로 입력하면 됩니다.
string passwordFormat은 System.Web.Configuration.FormsAuthPasswordFormat 열거형 값 중 하나를 나타내는 String입니다.


2. string passwordFormat 세부항목

 
                           표2-1. System.Web.Configuration.FormsAuthPasswordFormat 열거형 값

 번호

 종류

 비고 

 1

 Clear

 암호화 시키지 않습니다.

 2

 MD5

 암호화

 3

 SHA1

 암호화


3. MD5와 SHA1(읽어보기)


                                     표2-2. MD5와 SHA1의 특징 및 문제점 그리고 현재는?


MD5(Message-Digest algorithm 5)
는 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용됩니다. 1991년에 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안했습니다.

1996년에 MD5의 설계상 결함이 발견되었습니다. 이것은 매우 치명적인 결함은 아니었지만, 암호학자들은 해시 용도로 SHA-1와 같이 다른 안전한 알고리즘을 사용할 것을 권장하기 시작했습니다. 2004년에는 더욱 심한 암호화 결함[1]이 발견되었고. 2006년에는 노트북 컴퓨터 한 대의 계산 능력으로 1분 내에 해시 충돌을 찾을 정도로 빠른 알고리즘이 발표[2]되기도 하였습니다. 현재 MD5 알고리즘을 보안 관련 용도로 쓰는 것은 권장하지 않으며, 심각한 보안 문제를 야기할 수도 있습니다. 2008년 12월에는 MD5의 결함을 이용해 SSL 인증서를 변조하는 것이 가능하다는 것이 발표되기도 했습니다.

 


SHA(Secure Hash Algorithm, 안전한 해쉬 알고리즘) 함수들은 서로 관련된 암호학적 해쉬 함수들의 모음입니다. 이들 함수는 미국 국가 안전 보장국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정되었습니다. SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA라고 불리지만, 나중에 설계된 함수들과 구별하기 위하여 SHA-0이라고도 불립니다. 2년 후 SHA-0의 변형인 SHA-1이 발표되었으며, 그 후에 4종류의 변형, 즉 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었습니다. 이들을 통칭해서 SHA-2라고 하기도 합니다.

SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 합니다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장합니다.

SHA-0과 SHA-1에 대한 공격은 이미 발견되었습니다. SHA-2에 대한 공격은 아직 발견되지 않았으나, 전문가들은 SHA-2 함수들이 SHA-1과 비슷한 방법을 사용하기 때문에 공격이 발견될 가능성이 있다고 지적합니다. 이들은 이제 새로운 해쉬 함수 표준을 위해 후보 함수들을 개발하고 있습니다.

 


4. 출력물

이 결과를 토대로 볼 때 그래도 MD-5보다는 SHA1이 낫다는 것을 확인할 수 있습니다.
라이브러리를 사용하면 구현하기 쉽습니다. 물론 라이브러리를 직접 구현한다면 매우 복잡하고 어렵습니다.
이번 실습에서는 아래와 같은 화면을 구현하여 암호 알고리즘을 적용하는 방법을 설명하겠습니다.



1. 새 프로젝트 만들기



ASP 빈 프로젝트를 만듭니다.

2. 빈 항목 추가하기(ASPX)



적당히 설정 후 추가 버튼을 누릅니다.

3. Label 만들기



도구 모음에서 Label을 하나 선택하여 만듭니다.

3. 코딩

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           
            string sField = "1";
            Label1.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(sField, "SHA1");

        }
    }
}



5. 참고자료(Reference)

1. http://ko.wikipedia.org/wiki/MD5, Accessed by 2011-01-23
2. http://ko.wikipedia.org/wiki/SHA, Accessed by 2011-01-23

반응형
728x90
300x250

[ASP.NET] 내장 암호화(FormsAuthenticationTicket) 기법 사용하기 - 복/부호화 (O)

.NET Framework에 탑재된 System.Web.Security의 라이브러리를 사용하여 암호화하는 방법을 소개하겠습니다. 이번에 소개할 암호화 기법은 폼 인증에 이용되는 FormsAuthenticationTicket을 이용하는 방법에 대해서 설명하겠습니다.
이 암호화 기법의 특징은 대략 암호화가 이루어지면 길이가 300~400문자 이내로 구성됩니다. 쿠키에 적용하여 사용하면 많은 도움을 얻게 될 것입니다.

이번 실습 강좌에서는 아래에 출력된 화면과 같이 복호화와 부호화 처리를 구현하는 방법을 소개하겠습니다.


1. ASP.NET으로 암호화 구현하기(FormsAuthenticationTicket)

 

그림 1-1. 완성된 프로그램

1-1. ASP.NET 빈 프로젝트 만들기



새 프로젝트 만들기에서 ASP.NET 빈 웹 응용프로그램 만들기를 선택한 후에 적절한 설정을 맞추고 확인을 클릭합니다.

1-2. 빈 항목 추가하기(ASPX 페이지)



aspx 페이지를 적당히 설정 후에 추가를 누릅니다.

1-3. 도구 상자에서 Label 만들기



파란색으로 점 찍어놓은 Label 버튼을 클릭하여 디자인 창에 2개를 만들어줍니다.
그렇게 되면 Label1, Label2가 생성된 것을 보실 수 있습니다.

1-4. 코딩하기



디자인 창에서 빈 바탕에 더블클릭 하시면 Page_Load라는 Void 형식의 객체가 만들어집니다.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
          string sField = "1";
        Label1.Text = FormsAuthentication.Encrypt(new FormsAuthenticationTicket(sField, true, 1));

        FormsAuthenticationTicket Ticket = FormsAuthentication.Decrypt(Label1.Text);

        Label2.Text = Ticket.Name;

        }
    }
}

반응형

+ Recent posts