이 문서는 여러 사이트에서 인증 정보를 간단하게 공유하는 방법을 설명하고 있습니다. 만약 협력 관계에 있는 다른 사이트와 로그인 정보 등을 간단하고 안전하게 공유해야 한다면, 이 문서의 내용이 조금은 도움이 될 거 같습니다.
예제는 ASP, ASP.NET 1.1, ASP.NET 2.0, JSP, PHP 5 용으로 총 5개가 작성되었으며, 문서는 워드 2003으로 작성되었습니다.

참고로 암호화를 할 때 임의 문자열(salt)과 클라이언트 IP를 덧붙이고, 복호화 후 클라이언트 IP 검사를 추가하면 보안성을 더 높일 수 있습니다.

신고

UrlEncoder.zip

소스 관리의 편의 문제로 현재 주석은 영어로 작성되어 있습니다.


ASPURL 디코딩하는 기능이 없어서, 제가 예전에 작성했던 CHttpClient를 기반으로 URL을 인코딩하고 디코딩할 수 있는 COM 컴포넌트를 만들어 봤습니다. 이 컴포넌트를 사용하려면 HyeongryeolUrlEncoder.dll을 설치하신 후, regsvr32.exe 프로그램으로 등록하시면 됩니다. (설치는 %WINDOWS%System32 폴더에 할 것을 권장합니다.)

다음은 ASP에서 컴포넌트를 사용하는 예제 코드입니다.
Set objEncoder = Server.CreateObject ("Hyeongryeol.UrlEncoder")
objEncoder.CodePage = Response.CodePage

strEncoded = objEncoder.Encode ("테스트 샘플")
strDecoded = objEncoder.Decode (strEncoded)
또한 위의 코드에서 보듯이, 이 컴포넌트는 코드 페이지 속성을 지원하는데, 이를 사용하면 UTF-8 사이트와 ANSI 한국어 사이트 사이에 서로 쿼리 스트링을 주고 받을 수 있습니다. 기본 코드 페이지는 CP_ACP입니다.

다음 두 개의 ASP 페이지는 UTF-8 사이트와 ANSI 한국어 사이트가 서로 쿼리 스트링을 주고 받는 예제입니다.
<%@ Language="VBScript" CodePage="65001" %>
<%
'
' 유니코드 사이트 (UTF-8, http://sitea/url.asp)
'
%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>http://sitea/url.asp</title>
</head>
<body>
    전달된 문자열: <%=Request.QueryString ("passed")%><br />
    <br />

<%
    Set objEncoder = Server.CreateObject ("Hyeongryeol.UrlEncoder")
    objEncoder.CodePage = 949   ' 한국어 코드페이지로 설정.
%>

    <a href="http://siteb/url.asp?passed=<%=objEncoder.Encode ("테스트 한국어")%>">
        한국어 ANSI 문자열로 인코딩된 쿼리 스트링을 B 사이트에 전달하기.
    </a>
</body>
</html>
<%@ Language="VBScript" CodePage="949" %>
<%
'
' ANSI 사이트 (한국어, http://siteb/url.asp)
'
%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
    <title>http://siteb/url.asp</title>
</head>
<body>
    전달된 문자열: <%=Request.QueryString ("passed")%><br />
    <br />

<%
    Set objEncoder = Server.CreateObject ("Hyeongryeol.UrlEncoder")
    objEncoder.CodePage = 65001   ' UTF-8 코드페이지로 설정.
%>

    <a href="http://sitea/url.asp?passed=<%=objEncoder.Encode ("테스트 한국어")%>">
        UTF-8 문자열로 인코딩된 쿼리 스트링을 A 사이트에 전달하기.
    </a>
</body>
</html>
신고


한국어로 보기
This is a simple COM component for the URL encoding. It is based on the CHttpClient. The major reason to write this component is the lack of capability to decode a URL encoded string in ASP. It supports URL encoding and decoding. If you want to use this component, you have to install HyeongryeolUrlEncoder.dll and register it by using the regsvr32.exe program.
(I recommend you to install it in the %WINDOWS%System32 folder.)

You can use this component as the following code in ASP.
Set objEncoder = Server.CreateObject ("Hyeongryeol.UrlEncoder")
objEncoder.CodePage = Response.CodePage

strEncoded = objEncoder.Encode ("Test sample")
strDecoded = objEncoder.Decode (strEncoded)
As you can see in the above code, you can also specify a code page property. It is useful if you have to send a query string to an another site in a different code page. The default code page is CP_ACP.

The following two ASP pages show how to communicate between an UTF-8 site and an ANSI site(korean) through a query string.
<%@ Language="VBScript" CodePage="65001" %>
<%
'
' An unicode site (UTF-8, http://sitea/url.asp)
'
%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>http://sitea/url.asp</title>
</head>
<body>
    A passed string: <%=Request.QueryString ("passed")%><br />
    <br />

<%
    Set objEncoder = Server.CreateObject ("Hyeongryeol.UrlEncoder")
    objEncoder.CodePage = 949   ' Set the korean code page.
%>

    <a href="http://siteb/url.asp?passed=<%=objEncoder.Encode ("테스트 한국어")%>">
        Go Site B with an URL encoded korean ANSI string.
    </a>
</body>
</html>
<%@ Language="VBScript" CodePage="949" %>
<%
'
' An ANSI site (korean, http://siteb/url.asp)
'
%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
    <title>http://siteb/url.asp</title>
</head>
<body>
    A passed string: <%=Request.QueryString ("passed")%><br />
    <br />

<%
    Set objEncoder = Server.CreateObject ("Hyeongryeol.UrlEncoder")
    objEncoder.CodePage = 65001   ' Set the UTF-8 code page.
%>

    <a href="http://sitea/url.asp?passed=<%=objEncoder.Encode ("테스트 한국어")%>">
        Go Site A with an URL encoded UTF-8 unicode string.
    </a>
</body>
</html>
신고

티스토리 툴바