728x90

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'하늘을 사랑한 사람 여행기' 카테고리의 다른 글

계룡산 첫번째  (0) 2014.09.22
가평 아침고요수목원 세번째  (0) 2013.06.24
가평 아침 고요수목원 첫번째  (0) 2013.06.23
청평 드라이브~  (0) 2013.05.19
벗꽃의 향연  (0) 2013.04.14
728x90

 

 

 

 

 

 

 

 

 

 

728x90
728x90

입력받은 데이터를 서버에서 처리할 수 있는 문자셋으로 변환해서 전송하게 된다.

     <form name=”fForm” method=”post” action=”" accept-charset=”utf-8″>

     </form>

     현재 페이지의 문자셋과 관계없이 전송시에 accept-charset 에 지정된 문자셋으로 변환해서 전송하게 된다.

728x90

'프로그래밍 > 웹표준' 카테고리의 다른 글

jquery input type='file' 초기화 처리  (0) 2016.07.12
홈페이지 생성시 웹 폰트 사용하기  (0) 2015.11.24
다음 사진 올리는 방법  (0) 2015.08.12
html5 기본구조  (0) 2013.08.09
if IE 명령어 사용법  (0) 2012.10.25
728x90

Session 관리

 

1. 세션 상태 모드

 

1) InProc ( Default )

 

- 세션 정보를 웹서버 메모리에 저장

- 데이터베이스 이용하는 것보다 성능 우월

- 웹 서비스 재부팅시 모든 세션 사라짐

 

 

2) StateServer

 

- 윈도우 서버 관리도구에 있는 ASP.NET State Service 라는 서비스 데몬의 메모리 이용

- IIS 재부팅 되어도 세션 정보 유지

- 하나의 서비스 데몬이므로 여러개의 웹서버에서 하나의 세션관리 가능해짐

- 윈도우 시작시 수정 시작 설정되어 있음 ( StateServer 를 하려면 자동 고려 하거나 서비스 시작 시켜야 함 )

- 웹서버 재부팅시에는 세션 사라짐

 

 

3) SQL Server

 

- 세션 정보를 SQL Server 에서 저장 관리

- 웹서버 재부팅되어도 세션 유지

- 여러개의 웹서버에서 하나의 세션관리 가능

- 물리적인 디스크 I/O 가 발생되어 가장 느린 상테 관리 방법

 

 

2. 세션 상태 모드 설정

 

1) web.config 에서 설정

  1. <configuration>  
  2.     <system.web>  
  3.         <sessionState mode="off || StateServer || SQLServer " ~~ />  
  4.     </system.web>  
  5. </configuration>  

 

 

2) 각 소스상에서 System.Web.SessionState.HttpSession-State.Mode 속성으로 셋팅

 

 

 

[SQL Server Settion 설정 방법]

 

1. DB 에 ASPState DB 생성

 

< DB 서버 cmd 창에서 아래의 경로로 aspnet_regsql 실행 >

 

C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regsql -S "ServerHost" -U sa -P [sa password] -ssadd -sstype c -d "ASPState"

(ex: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql -S localhost -U sa -P your-password -ssadd -sstype p)

 

위 명령어를 치면 아래 < 그림1 > 의 ASPState 라는 DB 및 관련 SP 들이 생김

 

<주의사항>

Password 등의 글자에 "&" 등이 있으면 전체 명령어를 인식하는것이 아닌 "&" 앞까지 인식.

따라서 암호에 "&" 가 있으면 aspnet_regsql -S localhost -U sa -ssadd -sstype p 로 "-P"를 빼서 명령어를 친 다음 암호 입력창이 나오면 암호입력

 

 

 

2. Web.config 설정

  1. <configuration>  
  2.     <system.web>  
  3.             <sessionState mode="SQLServer"   
  4. sqlConnectionString="data source=ServerHost; User ID=SessionUserID; Password=SessionUserPassword" timeout="3600" />  
  5.     </system.web>  
  6. </configuration>  

 

- 사용하고자 하는 User ID의 DB 계정은 ASPState에 대해 db_owner 이거나 아니면 최소한 db_datareader, db_datawriter 역할과 자동 생성되는 Stored procedure에 대해 실행 권한이 있어야 함.

 

 

< 그림1 >

 

 

 

 

< aspnet_regsql 파라미터 >

 

Parameter

Description

-S [Server Name] Sql Server name or IP address, where sessions will be stored
-E  Windows authentication is used to access SQL Server
-U [User Name] User name, if SQL authentication is used
-P [Password] Password, if SQL authentication is used
-D [Database Name] Database name. This parameter is used if parameter -sstype is equal to "c", which means that custom database is used as session storage.
-ssadd Abbreviation of "Session State Add". This option adds session state database.
-ssremove  This parameter removes existing session state database.
-sqlexportonly [Script File Name or Full Path]

 If this parameter is used, program will not execute any SQL, but just create T-SQL script which can be executed later on server(s). This is useful in shared hosting scenario.

Type of session state storage. There are three possible values:

-sstype [t|p|c] t, means temporary storage. Tables are created in temdb database. In this case session is lost if SQL Server restarts,
 p, represents persistent storage. Session state tables are created in AspState database,
 c, custom storage. In this case, you specify database name where sessions will be stored. Database name is set using -D parameter.

 

 

< ASPStateTempSessions 테이블, ASPStateTempApplications 테이블 내용 >

 

- 사이트에 접속된 사용자가 있으면 ( 처음 이거나, 세션기간만료 사용자 ) ASPStateTempSessions 테이블에 Row 생성 ( 만료일자: web.config 값에 따라 셋팅 )

 

 


728x90
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

--2008 이전 버젼의 경우

BACKUP LOG EchoRPT WITH NO_LOG

DBCC SHRINKDATABASE (EchoRPT, TRUNCATEONLY)

--2008 버젼의 경우

GO
-- Truncate the log by changing the database recovery model to SIMPLE.

ALTER DATABASE DB이름
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (DB이름_log, 1); --1mb로 축소
GO
-- Reset the database recovery model.
ALTER DATABASE DB이름
SET RECOVERY FULL;
GO

728x90
728x90

 

흔들림 없이 한걸음, 한걸음씩 앞으로 걸어간다.

사려깊이 생각하며 행동하라.

지나쳐가는 공간,

그 공간에서 일어나는 모든 것들을 잘 관찰하여야 한다.

무엇인지 꼭 이뤄질 것 같은 기분으로 밖으로 나와야 한다.

따스한 햇살이 풍푹우로 변할지도 모를 일이지만,

그래도 반짝이는 햇살을 지고 있는 한 파랗고도 파란 하늘을 가슴에 담을 수 있을 것이다.

한 시절을 풍미하며 세상에 나와 모든 사람들이 익히 알고 있는 사람이 아닌, 은거하면서 세상 사람들의 가슴 속으로 파고드는 빛과 소금이 되어주는 그런 사람이 되려 한다.

너무 큰 욕심은 내지 않기로 했다.

함께 하는 사람들과 동그랗게 모여 앉아 둥글 둥글 얼굴을 맞대고 이야기 할 수 있다면, 그 사람들이 겪은 이야기를 들을 수 있다면,

또 내가 가진 이야기를 들려 줄 수 있다면, 그것 들 속에서 커다란 에너지를 얻을 수 있으리라.

마치 커다란 싱크홀에 빠져 땅 속 깊숙히 떨어지다 죽기 살기로 나무 가쟁이를 잡고, 풀 포기를 잡고 흙을 꽉쥐며 그곳을 탈출한 기분이랄까?

커다란 구덩이는 결국 내 자신이 파고 있었다는 것을 잘 알게 되었을 때는 내리 쬐는 태양이 늬엿늬엿 저물어 가며 기다란 그림자를 만들어 가고 있을 때였다. 다행스럽게 해가 저물기 전 붉게 물든 하늘을 바라 보았다.

검붉은 빛이 타오르는 가슴 만큼이나 강렬하게 가슴을 흔들었다.

검게 그슬린 얼굴에 미소를 띄어 보았다.

밤이 오고 다시 밤이 지나치면 새벽이 올 것이다.

새벽이 오고 있다는 것 만으로도 충분한 보상을 받은 것이다.

다시 할 수 있다는 의지가 있는 한은 죽어 쓰러져 버리지 않는 한은 꼭 해내야 하는 것들이 있다.

그것을 이루기 전엔 결코 쓰러지면 않된다.

두손을 마주대고 내 자신에게 다짐해 본다.

불사조가 되겠다고

이몸이 모두 타버리고 잿더미가 되더라도

이 땅위에서 하늘을 느끼고 나를 느끼며 미래를 향해 걸어가고 있었던 한 남자,

그 남자 이야기는 허공을 빙빙 돌고 돌아 대지에 녹아 들 것이다.

 

728x90

'에세이' 카테고리의 다른 글

유희  (0) 2016.03.26
가을 어느날, 파도에 둘러 쌓여  (0) 2015.10.02
유난히 차가운 이천십삼년 사월  (0) 2013.04.11
봄이 오는 길목에서  (0) 2013.03.28
꿈꾸는 소년 2013년 3월 26일 달빛 사이를 걷다.  (0) 2013.03.26
728x90

이번에는 XSS공격에 대하여 몇자 적어 봅니다.

Cross Site Scripting 웹사이트에 접속한 사용자가 공격의 대상이 되는 기법으로, 사용자의 입력 값에 악의적인 Javascript code 삽입하여 페이지를 로드 함으로 현재 페이지를 열람하는 사용자에게 스크립트를 실행시키도록 하는 것입니다. 그러므로 사용자의 입력을 받는 모든 사이트에서 XSS공격이 일어날 가능성이 있습니다. 특히 다음과 같은 상황에서 자주 발생합니다.

1. 검색할 단어를 입력하는 Input 영역에서 검색단어를 입력한 , 검색 결과와 함께 입력한 검색 키워드를 다시 보여주는 경우

2. 사용자 입력 폼에 입력한 내용들을 다시 출력하는 경우

3. 게시판에서 내용들을 열람하는 경우

공격자는 XSS 통해서 사용자의 쿠키를 변경하거나 탈취할 있으며 정상적인 사용자에 대해서 잘못된 정보를 보내줄 수도 있습니다. 이러한 XSS 최근 Phishing기법에 많이 사용되는데 악의적인 사용자가 변조된 입력 폼을 제공함으로 다른 사용자의 정보가 노출되고 있습니다. 또한 자바 스크립트 코드뿐만 아니라 object들을 사용자의 브라우저상에서 실행시킴으로 광고팝업이나 브라우저를 변조할 있습니다.

XSS 공격을 방어하는 가장 좋은 방법은 어플리케이션이 모든 header , cookie, query string, form field, hidden field (예를 들면, 모든 parameter ) 대해 유효성 검사를 실시하는 것입니다. 사용자의 입력이 화면에 출력되어 나오는 경우, 사용자의 입력 값을 HTML Entity 변환시켜야만 합니다. 또한 위의 태그들을 HTML으로 인식시키지 않기 위해 스크립트에서는 함수를 지원합니다. 그리고 공개 게시판의 경우, HTML 형식을 지원하는 경우 XSS 잠재적인 위험성이 존재하므로, 이를 중지할 필요가 있습니다.

기본 대책

(1) ASP Script

사용자의 입력에 대해 Server.HTMLEncode함수를 사용하여 HTML태그를 비활성화 시킵니다.

Server.HTMLEncode함수를 사용하여 HTML태그를 변환합니다.

<%= Server.HTMLEncode(<script>alert(XSS Test);<script>) %>

위의 결과 tag들이 비활성화 됩니다.

(2) JSP Script

HTML코드의 시작을 알리는 < 대해서 &lt; 으로 변환시키는 방법입니다.

/% less than (<) character &lt; 으로 변환시킵니다. %/

String userInput = request.getParameter(keyword);

user_input = user_input.replaceAll(“’”, \’”);

(3) PHP Script

PHP 내장함수 가운데 입력 문자열에 대해서 HTML코드를 변환시켜주는 htmlentities() 사용하여 XSS 막습니다.

<?

$str = "A 'quote' is <b>bold</b>";

echo htmlentities($str);

// 출력: A 'quote' is &lt;b&gt;bold&lt;/b&gt;

?>

이것또한 간단 하게 기본적인 부분만 처리 해주어도 상당부분 방어가 가능합니다.

조금 귀찮더라도 이정도 처리는 해주어야 하지 않을까 합니다.

728x90

+ Recent posts