"브이비스크립트"의 두 판 사이의 차이
leejia1222 (토론 | 기여) |
|||
(사용자 4명의 중간 판 45개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
+ | [[파일:브이비스크립트 로고.png|썸네일|200픽셀|'''브이비스크립트'''(VBScript)]] | ||
+ | |||
'''브이비스크립트'''<!--브이비 스크립트, VB 스크립트, VB스크립트-->(VBScript)<!--VB Script-->는 Visual Basic Scripting Edition의 약자로서, 미국 [[마이크로소프트]] [[비주얼베이직]](Visual Basic) 기반의 [[스크립트 언어|스크립트]] [[프로그래밍 언어]]이다. | '''브이비스크립트'''<!--브이비 스크립트, VB 스크립트, VB스크립트-->(VBScript)<!--VB Script-->는 Visual Basic Scripting Edition의 약자로서, 미국 [[마이크로소프트]] [[비주얼베이직]](Visual Basic) 기반의 [[스크립트 언어|스크립트]] [[프로그래밍 언어]]이다. | ||
== 개요 == | == 개요 == | ||
− | + | 브이비스크립트는 마이크로소프트가 만든 액티브 [[스크립트 언어]]다. 문장마다 변환되어 해석, 실행되는 언어이며 윈도우 98 이후 OS에 기본으로 설치되어 있다. 브이비스크립트는 [[윈도우]] [[스크립트]]를 사용하여 응용 프로그램을 호스팅한다. 바이러스의 대부분이 브이비스크립트로 만들어지는 사건이 발생해 사람들에게는 바이러스 만드는 언어로 많이 알려진 언어다.<ref>VBScript 마이크로소프트 공식 홈페이지 - https://docs.microsoft.com/en-us/previous-versions//t0aew7h6(v=vs.85)</ref> 브이비스크립트는 마이크로소프트가 개발한 액티브 스크립트 언어이다. 이 언어의 구문은 마이크로소프트의 비주얼 베이직 프로그래밍 언어 계통의 일부를 반영한다. 브이비스크립트는 윈도우 98 이후의 여러 윈도우 운영체제에서 기본으로 설치되어 있으며, 윈도우 서버 운영 체제의 경우 윈도우 NT 4.0 옵션 팩 이후로 이용이 가능하다. 또, 실행 중인 장치의 목적과 구성에 따라 윈도우 임베디드 컴팩트(Windows Embedded Compact)에서도 선택적으로 이용이 가능하다. 초기에는 1970년대 말에 처음 개발된 배치 언어보다 더 강력한 자동화 도구 검색에 대한 지원을 윈도우 관리자로부터 받았다. 브이비스크립트는 호스트 환경 안에서 실행되어야 하며, 어떠한 환경에서는 마이크로소프트 윈도우의 표준 설치(윈도우 스크립트 호스트, 윈도우 인터넷 익스플로러) 위에 제공된다. 게다가 브이비스크립트 호스트 환경은 마이크로소프트 스크립트 컨트롤(msscript.ocx)과 같은 기술을 통해 다른 프로그램에 이식되는 경우가 있다.<ref>VB스크립트 위키백과 - https://ko.wikipedia.org/wiki/VB%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8</ref> | |
+ | |||
+ | == 역사 == | ||
+ | ; 브이스크립트의 개발 | ||
+ | 브이비스크립트는 1996년에 출시된 마이크로소프트 윈도우 스크립트 기술(Microsoft Windows Script Technologies)의 일부로 시작되었다. 이 기술은 처음에 웹 개발자를 대상으로 했다. 불과 2년 남짓한 기간 동안 브이비스크립트는 버전 1.0에서 2.0으로 발전했고, 그 기간 동안 1980년대 초에 처음 개발된 일괄 언어보다 더 강력한 자동화 도구를 찾는 윈도우 시스템 관리자로부터 지지를 얻었다. | ||
+ | |||
+ | * 1988년 3월 6일, 앨런 쿠퍼(Alan Cooper)는 빌 게이츠(Bill Gates)에게 위젯을 역동적으로 추가할 수 있는 그의 쉘 프로토타입을 보여주었다. | ||
+ | |||
+ | * 1991년 3월 20일, 마이크로소프트는 퀵베이직(Quick Basic)을 채택했다. 이를 통해 사용자는 [[GUI]]를 통해 빠르고 쉽게 윈도우 앱을 만들 수 있었다. | ||
+ | |||
+ | * 1996년 8월 1일, 인터넷 익스플로러(Internet Explorer)가 브이비스크립트를 포함하는 기능으로 만들어졌다. | ||
+ | |||
+ | * n 버전 5.0, 브이비스크립트의 기능은 정규식, 클래스, With 문, 다른 스크립트 실행 중에 작성된 스크립트 명령을 평가하고 실행하기 위한 Eval, ExecuteGlobal 기능, GetRef를 통한 함수와 점퍼 시스템 및 DCOM(Distributed COM) 지원을 포함한 새로운 기능으로 증가되었다. | ||
+ | |||
+ | * 버전 5.5에서는 서브매치(SubMatches)가 브이비스크립트의 정규식 클래스에 추가되어 마침내 스크립트 작성자가 표현식 그룹 내의 텍스트를 캡처할 수 있게 되었다. 그 기능은 이미 제이스크립트로 제공되었다. .NET 프레임 워크의 출현으로 스크립팅 팀은 [[웹]] 개발을 위해 [[ASP.NET]] 내에서 향후 브이비스크립트 지원을 구현하기로 결정했다. 따라서 브이비스크립트 엔진의 새 버전은 개발되지 않고 마이크로소프트에서 버그 수정 및 보안 기능 향상을 담당한다.<ref>VBScript 위키백과 - https://en.wikipedia.org/wiki/VBScript</ref> | ||
+ | |||
+ | ; 브이비스크립트를 이용한 악성코드 | ||
+ | 브이비스크립트를 이용한 최초의 바이러스는 [[HTML]] 인터넷 바이러스로, 1998년에 나타났다. 초기의 브이비스크립트로 작성된 바이러스나 [[웜]]은 HTML 속에 브이비스크립트를 포함한 형태였고 사용자가 허락하지 않으면 실행되지 않는 문제가 있었지만 동일 제작자는 이후 조금씩 개량된 브이비스크립트를 이용한 악성 프로그램을 제작했다. 브이비스크립트 악성 프로그램을 발전시킨 사람은 자신을 Zulu로 부르는 아르헨티나 사람으로, 1999년 초에 발견된 Zulu는 브이비스크립트 바이러스 중 최초의 [[암호화]] 기법을 사용한다. 이후 그가 제작한 라누스(Lanus) 바이러스는 마이크로소프트에서 제공하는 암호화된 브이비스크립트를 이용한 최초의 바이러스이다. | ||
+ | |||
+ | * 2000년 2월 발견된 넷로그(Netlog) 웜은 독특하게 퍼지는 웜으로 임의의 아이피 어드레스를 내부적인 계산으로 구한 후, 파일의 읽기 및 쓰기가 가능한지 검사하고 쓰기가 가능하면 자신을 복사하는 형태로 되어 있다. 많은 기업에서 공유폴더를 사용하며 심지어 씨드라이브 전체를 읽기 및 쓰기로 공유하는 형태가 많다. 이 경우 넷로그 뿐 아니라 공유폴더로 퍼지는 유사 웜이나 바이러스에 쉽게 감염될 수 있으며, 다른 사람이 공유된 폴더의 파일 접근이 자유롭기 때문에 보안상 문제가 된다. | ||
+ | |||
+ | * 2000년 5월 26일 스테이지(Stages) 웜이 발견되었는데 이 파일은 에스에이치에스(SHS) 파일 형태로 실행하면 성적 농담을 출력해 사용자가 일반 텍스트 파일로 생각하게 한다. 브이비스크립트로 작성되었지만 에스에이치에스 파일 구조는 워드나 엑셀의 파일 포맷과 유사한 형태다. | ||
+ | |||
+ | * 2000년 6월 스페인에서 발견된 티모포니카(Timofonica)는 전형적인 브이비스크립트 웜이지만 한가지 특징적인 증상으로 유명해진 웜이다. 일부 언론에서 휴대전화단말기를 감염시키는 것으로 잘못 알려졌지만 실제로는 휴대전화단말기로 문자 메시지를 보낼 수 있지만 휴대전화단말기 자체를 감염시키지는 않는다. | ||
+ | |||
+ | * 2000년 9월에 발견된 퍼니(Funny)는 특정 온라인 뱅킹 시스템의 사용자 정보를 빼 갈 수 있는 트로이목마를 포함한 형태하고 있어 개인정보유출과 함께 범죄에 악용될 수 있는 바이러스이다. | ||
+ | |||
+ | * 2001년 5월에 발견된 햅타임(Haptime)과 변형들은 아웃룩 익스프레스의 보안상 취약성도 이용하며 HTML, 에이에스피, 브이비스크립트 등을 감염시키고 일부 버전은 HTA 파일 생성등 스크립트 바이러스가 할 수 있는 다양한 감염 기법을 사용한다. | ||
+ | |||
+ | * 2001년 4월과 8월에 브이비스크립트를 이용하는 Logo/Login, VBS/PeachyPDF가 발견되었다. 이들 웜은 VBS 파일 형태로 퍼지지 않고 메일 발송 기능을 가진 브이비스크립트를 파일로 만든 후 실행해 브이비스크립트의 기능을 이용해 첨부파일을 아웃룩으로 보내는 형태이다. 이런 방법은 아웃룩을 통한 메일 발송이 불가능한 언어나 프로그래밍 실력이 다소 떨어지는 바이러스 제작자들이 상대적으로 제작하기 쉬운 브이비스크립트를 이용해 바이러스가 포함된 파일을 메일로 발송하는 방법을 사용하고 있다. | ||
+ | |||
+ | * 2001년 중반 이후 브이비스크립트 등의 확장자는 아웃룩으로 메일 발송을 제한하는 새로운 오피스 제품군의 보급으로 브이비스크립트를 이용한 웜이나 바이러스는 감소하고 대신 초기에 써캠, 님다와 같은 윈도우 실행 파일형 웜이 다시 증가하게 되었다.<ref name="안랩"></ref> | ||
+ | |||
+ | ==특징== | ||
+ | 브이비스크립트는 썬 마이크로시스템즈와 [[넷스케이프]](Netscape)의 자바스크립트 개발에 자극을 받아 마이크로소프트에서 개발한 클라이언트측 스크립트이다. [[비주얼베이직]]의 일부 기능을 웹 환경에서 사용할수 있도록 작성되었다. 브이비스크립트는 인터넷 익스플로러 2.0이상에서 지원도고 있으나 리눅스나 유닉스 계열의 웹 브라우저에서는 브이비스크립트가 지원되지 않아 브이비스크립트가 코드가 포함된 웹 서버에 접근하면 화면이 깨져 알아보기 어려운 경우가 있다. 브이비스크립트의 장점은 전 세계 95% 이상의 사용자가 사용하고 있는 인터넷익스플로러 기본 스크립트 언어라는 것이다. 가장 배우기 쉬운 언어중 하나이며 빠른 시간 안에 프로그램을 작성할 수 있다. 브이비스크립트의 단점은 [[자바스크립트]](JavaScript)와 마찬가지로 보안이 취약하다. 또한 익스플로러 이외의 웹 브라우저에서 거의 지원되지 않기 때문에 범용성에 문제가 있다.<ref> sssoh, 〈[https://sssoh.tistory.com/6 프로그래밍 언어의 종류와 특징]〉, 《티스토리》, 2012-01-17</ref> 또한 브이비스크립트 파일은 웹브라우저 뿐 아니라 윈도우 98 이상에서 독립적으로 실행 가능하므로 바이러스 가능성이 커졌다. 그리고 브이비스크립트는 사용자 시스템의 파일이나 레지스트리를 생성, 변경, 삭제시 사용자 동의를 구하지 않기 때문에 마음대로 변경할 수 있고 이것은 보안에 문제가 생길 수 있다. 바이러스나 웜은 자기 자신을 복제할 수 있는 명령을 가지면 만들 수 있는데 브이비스크립트는 자기 복제 명령뿐 아니라 네트워크, 레지스트리, MAPI를 이용한 메일 전송 등 최근 바이러스가 필요한 거의 모든 기능을 제공하고 있다.<ref name="안랩"> 차민석, 〈[https://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=3&curPage=10&columnist=5&series_key=&seq=2105 악성스크립트의 종류와 역사 (2)]〉, 《안랩》, 2002-02-07</ref> | ||
+ | |||
+ | ===문법=== | ||
+ | *'''인식자''' : 프로그래머가 선언하는 변수나 함수의 이름이 될 수 있는 단어를 말한다. 에이에스피 프로그래밍의 내부 연산 처리나 데이터 처리에서 가장 중요한 역할을 수행하는 인식자는 다음의 특징을 가지고 있다. 우선 에이에스피가 브이비스크립트를 기준으로 하기 때문에 브이비스크립트에서 지원하는 범위와 동일하다는 것을 알고 있어야 한다. 특징으로 문자와 숫자, _(under bar)로 이루어지고, 길이는 보통 255자 이내로 설정한다. 첫 문자는 숫자가 되어서는 안되고, 마지막 문자는 마침표(.)를 사용해서는 안 된다. 그리고 일반적으로 대소문자의 구분을 하지 않는다. | ||
+ | |||
+ | *'''변수''' : 변수를 선언하는 키워드는 dim이다.스크립트 언어의 특징 중 하나가 변수 선언 키워드를 생략할 수 있다. 생략하면 지역변수가 되는것이고 붙여 주면 전역변수가 된다. | ||
+ | |||
+ | *'''상수''' : 상수의 선언은 Const라는 키워드를 이용한다. 변수가 프로그램 코드에서 변하는 값을 저장하는 곳이라면 상수는 항상 똑같은 값을 저장하고 있는 곳이라 할 수 있다. 즉, 상수라는 것은 프로그래머나 시스템에 의해 미리 정해져있는 것으로, 복잡한 숫자의 값을 인지하기 쉬운 문자로 변경하여 사용하고자 할 때 주로 사용한다. 상수는 변수와는 다르게 코드가 끝날때 까지 유지가 되어서 상수값을 변경할 수가 없다. | ||
+ | |||
+ | *'''데이터 형식''' : 숫자 데이터 형식, 문자 데이터 형식, 날짜형 등으로 나눌 수 있다. 숫자 데이터는 정수형(Integer), 긴 정수형(Long), 바이트(Byte), 싱글(Single), 더블(Double), 통화(Currency) 가 있다. 문자 데이터는 큰따옴표만 사용하며 브이비스크립트에서 따옴표는 주석으로 사용된다. 날짜형 데이터는 날짜에 대한 정보를 저장하기 위해 사용하는 데이터 형식이다. 일반적인 날짜와 시간까지 저장이 가능하다. 에이에스피에서 현재의 날짜와 시간을 알고자 할 경우에 Now() 함수를 사용하여 결과를 출력할 수 있다. 이때 출력되는 형식이 날짜형에 저장될 수 있다. 일반적으로 날짜형의 변수는 #을 붙여 사용한다. 만일 #이 없다면 문자열이나 숫자 데이터형으로 변환된다. 이외의 에이에스피에서 지원하는 데이터형은 여러 가지가 있다. True나 False의 값을 저장하는 불린(Boolean)이나 전혀 값을 가지고 있지 않은 엠티(Empty), 데이터를 가지고 있지 않은 필드를 가리킬 때 사용하는 널, 객체를 나타내는 오브젝트(Object) 등이 있다. | ||
+ | |||
+ | *'''연산자''' : 산술 연산자, 관계연산자, 논리연산자 등으로 나뉜다. 산술 연산자는 산술(Arithmetic) 계산을 위한 연산자들이다. 기본적으로 가감승제의 작업을 수행한다. 관계 연산자의 관계(relational)라는 것은 둘 사이의 비교를 하여 결과를 얻는다는 말이다. 두 변수 사이의 관계를 알고자 할 때 사용되는 것을 관계 연산자라고 한다. 논리 연산자는 조건에 대한 논리(Logical) 연산을 하기 위한 연산자들이다. 논리곱, 논리합, 부정 등이 주로 사용되며 조건문에 주로 사용된다.<ref> 올인, 〈[http://blog.daum.net/allsky/13 vbscript 문법]〉, 《다음 블로그》, 2009-02-20</ref> | ||
+ | |||
+ | ===스크립트=== | ||
+ | [[스크립트]](script)란 컴퓨터 프로세서나 컴파일러가 아닌 다른 프로그램에 의해 번역되고 수행되는 명령문의 집합이라 할 수 있다. 연극 용어인 스크립트에서 유래되었으며 초창기 스크립트 언어는 배치언어(Batch Languages) 또는 작업 제어 언어(Job Control Language)라고도 부른다. 일반적으로 [[C 언어]]나 [[C++]]과 같은 컴파일러 언어보다 제한된 능력과 느린 실행 속도를 갖지만, 프로그램 작성 측면에서는 보다 쉽고 빠르다고 할 수 있다. 웹 클라이언트 서버 환경에서 보면 [[펄]](Perl)은 웹서버에서, 자바스크립트는 클라이언트에서, 브이비스크립트는 서버와 클라이언트에서 실행된다. 스크립트는 문서를 써내려 가듯 쉽게 작성하는 프로그래밍 언어를 말하는 것으로 전문적인 지식이 없는 일반인도 비교적 쉽게 작성할 수 있다. 시스템 레벨의 컴퓨터 제어가 불가능하고 속도도 느린 편이지만, 인터넷의 발달과 함께 이용자들이 늘어가고 있다. 스크립트는 HTML과 함께 사용되어 보다 동적인 홈페이지를 만들 수 있게 해주며, 홈페이지와 방문자 사이의 의사 전달의 매개체로 많이 사용된다. 마우스 조작에 따른 반응은 스크립트 사용의 가장 대표적인 예라고 할 수 있다. 즉, 마우스 포인터가 그림 위에 위치했을 때 그림의 모양이나 색깔이 변경되도록 한다거나, 마우스로 상위 메뉴를 클릭했을 때 하위 메뉴가 펼쳐져 나타나는 것 등은 많이 사용되는 스크립트 효과의 예이다. 최근들어 가장 널리 사용되고 있는 것은 자바스크립트와 브이비스크립트이다. 자바스크립트는 기존의 [[자바]](Java)를 일반인도 보다 쉽게 사용할 수 있도록 해보자는 의도에서 나왔고, 브이비스크립트도 같은 의도로 비교적 쉬운 언어인 비주얼베이직의 형식을 빌어 만들어졌다.<ref> 오양, 〈[https://blog.naver.com/ohs792026/80010403498 스크립트]〉, 《네이버 블로그》, 2005-02-21</ref> | ||
+ | |||
+ | ====언어==== | ||
+ | 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어를 가리킨다. 스크립트 프로그래밍 언어라고도 한다. 스크립트 언어는 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로그램의 언어와 다른 언어로 사용되어 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다. 스크립트 언어는 다른 응용 프로그램에 삽입되어서 동작하는 프로그래밍 언어다. 비(非)스크립트 언어인 C, C++, 자바 등은 컴파일(Compile) 된 후 독립적으로 작동하는 하나의 완전한 응용 프로그램이지만, 자바스크립트, 제이쿼리(jQuery), 제이에스피(JSP), 피에이치피(PHP), 에이에스피(ASP), 펄, 파이썬(Python), 루비(Ruby), 브이비스크립트 등의 스크립트 언어는 다른 응용 프로그램 안에 삽입되어 해석되는 방식으로 작동한다.<ref name="네블"> 김자까, 〈[https://blog.naver.com/rlarbtjq7913/221711007833 스크립트 언어(Script Language)란 무엇인가?]〉, 《네이버 블로그》, 2019-11-18</ref> | ||
+ | |||
+ | ====종류==== | ||
+ | *'''[[자바스크립트]]'''(JavaScript) : 미국 [[넷스케이프]](Netscape)의 [[브렌든 아이크]](Brendan Eich)가 개발한 스크립트 프로그래밍 언어이다. 자바스크립트는 표준 [[HTML]] 문서 내에 삽입되어 사용되며, 인터랙티브한 웹 페이지를 만들 수 있게 한다. | ||
+ | |||
+ | *'''[[제이쿼리]]'''(jQuery) : HTML 문서에 삽입하여 사용할 수 있는 자바스크립트 라이브러리를 말한다. 단순하게 웹사이트를 만들 때 사용하는 일종의 도구라고 생각할 수 있다. 매우 쉽고 간단하기 때문에 HTML, [[CSS]], 자바스크립트에 관한 기초지식만 있다면 짧고 단순한 코드로 다양한 효과를 연출할 수 있다. | ||
+ | *'''[[JSP]]'''(제이에스피) : 자바 서버 페이지(JavaServer Pages)의 약자로서, HTML 페이지 안에 자바 코드를 직접 삽입하여 웹서버에서 동적으로 웹 페이지를 생성하여 웹브라우저가 표현할 수 있도록 전달해 주는 스크립트 프로그래밍 언어이다. HTML 문서 안에 <% ... %> 기호를 쓰고 그 안에 자바 코드를 삽입하는 방식으로 사용한다. [[서블릿]](Servlet)은 자바 소스 코드 안에 HTML을 삽입하지만, JSP는 반대로 HTML 문서 안에 자바 코드를 삽입한다. | ||
+ | |||
+ | *'''[[PHP]]'''(피에이치피) : HTML 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어이다. 1994년 라스무스 러도프(Rasmus Lerdorf)가 개발했다. 원래 Personal Home Page의 약자였으나, 나중에 Hypertext Preprocessor의 약자라고 설명되었다. 리눅스 운영체제에 아파치 웹서버를 설치하고 마이에스큐엘(MySQL) DB 환경에서 PHP 프로그래밍 언어가 주로 사용되기 때문에 LAMP라는 말이 생겼다. | ||
+ | |||
+ | *'''[[ASP]]'''(에이에스피) : Active Server Pages의 약자로서, 미국 마이크로소프트의 윈도우 서버에서 운영되는 스크립트 방식의 웹 프로그래밍 언어이다. | ||
+ | |||
+ | *'''[[펄]]'''(Perl) : "Practical Extraction and Report Language"의 약자로서, 유닉스 계열의 운영체제에서 사용하는 스크립트 프로그래밍 언어다. 1987년 래리 월(Larry Wall)이 개발하였다. | ||
+ | |||
+ | *'''[[파이썬]]'''(Python) : 1990년 네덜란드의 [[귀도 반 로썸]](Guido van Rossum)이 개발한 객체 지향 스크립트 프로그래밍 언어이다. 별도의 컴파일 과정이 필요 없어 개발기간이 단축되고, 리눅스나 윈도우 등 특정 플랫폼에 의존적이지 않고 독립적이다. 주로 장고(Django) 프레임워크 기반으로 개발한다. | ||
+ | |||
+ | *'''[[루비]]'''(Ruby) : 1995년 일본의 마츠모토 유키히로(まつもとゆきひろ)가 만든 객체 지향 스크립트 프로그래밍 언어다. 파이썬과 유사하며 깃허브(GitHub) 사이트는 루비 언어를 사용하여 개발되었다.<ref name="네블"></ref> | ||
+ | |||
+ | ===기능=== | ||
+ | 브이비스크립트의 카테고리 별 기능은 배열 처리, 과제, 표현식, 상수/리터럴, 제어흐름, 날짜/시간, 선언, 오류처리, 문자열 서식지정, 입출력, 연산자, 문자열 등이 있다.<ref>VBScript Features 마이크로소프트 문서 도구 - https://docs.microsoft.com/en-us/previous-versions//273zc69c(v=vs.85)</ref> 윈도우 스크립트 호스트(Windows Script Host)에서 호스팅할 때 비주얼베이직 6.0 에서는 사용할 수 없다. 이 기능에는 간편한 액세스가 포함된다. 이름이 지정되고 이름이 지정되지 않은 명령 줄 인수, 런타임에 정의된 텍스트의 런타임 실행 방법은 평가 및 실행, 원격 컴퓨터에서 스크립트를 실행하는 방법은 WMI(Windows Management Instrumentation)이다. 널리 알려진 언어를 사용하여 브이비스크립트 엔진을 다른 응용 프로그램에 포함한다. | ||
+ | |||
+ | ====언어 기능==== | ||
+ | 브이비스크립트의 언어는 비주얼베이직을 모델로 하기 때문에 절차, 제어 구조, 상수, 변수, 사용자 상호작용, 배열 처리, 날짜/시간 함수, 오류 처리, 수학 함수, 객체, 정규 표현식, 문자열 조작 등 유사한 범주를 사용하여 검토할 수 있다. 마이크로소프트에서 브이비스크립트 언어를 소개하는 몇 가지 핵심 사항들을 정리 보면 첫 번째로 "절차"는 코드를 더 작은 모듈로 분리하기 위한 브이비스크립트의 주요 구성물이다. 브이비스크립트는 할당문으로 결과를 반환할 수 있는 함수와 그렇지 않은 서브루틴을 구별한다. 매개변수는 위치적이며 값 또는 참조로 전달될 수 있다. 두 번째로 제어 구조에는 일반적인 반복 및 조건부 Do Loops, If-Then-Else 문 및 사례 문장이 포함되며, EscherIf 및 내포된 제어 구조와 같은 일부 복잡한 변형이 있다. 세 번째로 코딩 시 메모리 보조 도구로서, 가독성을 위해 논리 값의 경우, True 및 False, MsgBox 코드의 경우, vbOKCancel 및 vbYesNo, 색상 값의 경우, vbBlack 및 vbBYellow, 캐리지 리턴 문자의 경우, vbCR 등 많은 수의 상수가 있다. 네 번째로 변수는 기본적으로 "변수" 유형을 가지지만, 변환 함수(CInt, CDate 등)를 사용하여 특정 유형(정수, 날짜 등)을 강제하는 것이 가능하다. 다섯 번째로 사용자 상호 작용은 메시지 및 입력을 위한 간단한 대화 상자 형식을 제공하는 MsgBox와 입력 상자 기능을 통해 제공된다. 두 기능 모두 메시지를 표시하며, 전자는 표준 응답을 반환하고 후자는 사용자가 제공한 텍스트 또는 숫자 값을 반환한다. 제어장치와의 보다 정교한 GUI 상호작용을 위해, 예를 들어 HTML 애플리케이션에서 브이비스크립트를 HTML과 조합하여 사용할 수 있다. 비주얼베이직 또는 비주얼베이직 애플리케이션(Visual Basic for Applications)와 같이 이벤트 기반 양식은 지원되지 않는다. 마지막으로 이름은 대소문자를 구분하지 않는다. 그러나 일관성이 있고 현명하게 자본화하는 것이 브이비스크립트 스타일의 모범 사례로 간주된다. | ||
+ | |||
+ | ====프로그램 기능==== | ||
+ | 윈도우즈 스크립트 호스트가 호스팅할 때 브이비스크립트는 스크립팅 언어에 공통적이지만 비주얼 베이직 6.0에서는 사용할 수 없는 다양한 기능을 제공한다. 이러한 기능에는 다음에 대한 직접 또는 손쉬운 액세스가 포함된다. 이름이 지정되고 이름이 지정되지 않은 명령줄 인수, 방향을 바꿀 수 있는 Stdin과 stdout은 콘솔에 쓰기 때문에 리디렉션할 수 없는 WSH.Echo, WSH.ExitCode는 [[도스]](DoS) 배치 파일에서 또는 스크립트 파일을 호출한 프로세스에 의해 테스트될 수 있다. 네트워크 프린터, 네트워크 공유, 특수 폴더(예: 데스크톱, 즐겨찾기, MyDocuments 등) 그룹 구성원 자격과 같은 네트워크 사용자 정보, 런타임에 정의된 텍스트의 런타임 실행 방법(평가 및 실행), 원격 시스템에서 스크립트를 실행하는 방법, WMI(Windows Management Instrumentation) 널리 알려진 언어를 사용하여 브이비스크립트 엔진을 다른 애플리케이션에 내장하는 기능. 명령줄 실행자인 씨에스스크립트(CScript)는 다음을 위한 옵션을 제공한다. 대화형 또는 배치 모드, 명령줄에서 디버그 모드를 호출, 라인 번호를 포함한 오류 보고를 한다.<ref name="위키">VBScript VBcript 위키백과 - https://en.wikipedia.org/wiki/VBScript VBcript</ref> | ||
+ | |||
+ | ====추가 기능==== | ||
+ | 파일 시스템 관리, 파일 수정 및 스트리밍 텍스트 작업은 스트립팅 런타임 라이브러리(Scripting Runtime Library)로 구현된다. 액티브엑스(ActiveX) 기술을 통해 기능을 추가 할 수도 있다. 프로그래머는 COM(ActiveX) 모듈을 통해 확장성을 활용하여 스크립트 호스트와 브이비스크립트에 필수 기능 또는 원하는 기능을 장착할 수 있다.<ref name="위키"></ref> | ||
+ | |||
+ | ===개발환경=== | ||
+ | 마이크로소프트 인터넷 익스플로러(Microsoft Internet Explorer)에서 클라이언트측 웹 개발에 사용할 경우 브이비스크립트는 자바스크립트와 기능이 유사하다. HTML 페이지에 내장되거나 포함된 실행 가능한 함수를 작성하고 페이지의 DOM(Document Object Model)과 상호 작용하여 HTML만으로는 불가능한 작업을 수행하는 데 사용된다. 그러나 [[파이어폭스]](Firefox)나 [[오페라]](Opera)와 같은 다른 웹 브라우저들은 브이비스크립트에 대한 지원이 내장되어 있지 않다. 즉, 클라이언트측 스크립팅과 크로스 브라우저 호환성이 필요한 경우 개발자는 대개 브이비스크립트를 통해 자바스크립트를 선택한다. 브이비스크립트는 또한 웹 페이지의 서버 측 처리에도 사용되며, 특히 마이크로소프트 액티브서버페이지(ASP, Active Server Pages)와 함께 사용된다. 에이에스피 엔진 및 유형 라이브러리(asp.dll)는 vbscript.dll을 호출하여 브이비스크립트를 실행한다. 에이에스피 페이지에 포함된브이비스크립트는 <% 및 %> 컨텍스트 스위치 내에 포함되어 있다. 브이비스크립트가 있는 에이에스피 페이지의 다음 예에서는 현재 시간을 24시간 형식으로 표시하지만 윈도우즈 운영 체제에서 오류 메시지의 기본 스크립트로도 사용된다. 또한 브이비스크립트를 사용하여 마이크로소프트 윈도우즈를 실행하는 워크스테이션에서 직접 실행되는 애플리케이션을 생성할 수 있다. 가장 간단한 예는 WSH(Windows Script Host) 환경을 사용하는 스크립트다. 이러한 스크립트는 일반적으로 파일 확장자가 .vbs인 독립 실행형 파일에 있다. 스크립트는 다음과 같은 두 가지 방법으로 호출할 수 있다. Wscript.exe는 대화 상자, 입력 상자 등 GUI를 통해 출력 및 입력을 표시하는 데 사용된다. 씨스크립트.exe는 명령줄 환경에서 사용된다. | ||
+ | |||
+ | 브이비스크립트는 다음 두 가지 다른 유형의 스크립팅 파일에 포함될 수 있다. 윈도우스크립트 파일 및 HTML 응용 프로그램 WSF는 XML을 따르며 WSF 파일은 여러 브이비스크립트 파일을 포함할 수 있다. 결과적으로 WSF 파일은 코드 재사용을 위한 수단을 제공한다. 클래스나 기능의 라이브러리는 .wsf 파일에 포함될 수 있는 하나 이상의 .vbs 파일에 저장될 수 있기 때문에 기능은 모듈식으로 재사용될 수 있다. 파일 확장자는 .wsf이며 더블유에스스크립트(wscript)를 사용하여 실행할 수 있다..vbs 파일이 할 수 있는 것처럼 exe 또는 cscript.exe로 표현된다. HTML 뒤에 HTML 애플리케이션(HTA)을 스타일링하고, 파일에 있는 HTML을 사용하여 사용자 인터페이스를 생성하며, 프로그램 로직에는 브이비스크립트와 같은 스크립팅 언어가 사용된다. 파일 확장자는 .hta이며 mshta.exe를 사용하여 실행할 수 있다. 브이비스크립트는 다른 COM 지원 애플리케이션에서 호출할 수 있는 ActiveX 지원 스크립트 클래스인 윈도우즈 스크립트 구성 요소에서도 사용할 수 있다. 이 파일들은 확장명이 .wsc이다. 브이비스크립트는 간단하게 만들 수 있으며 메모장처럼 사용하기 쉬운 텍스트 편집기를 사용하여 코딩할 수 있다. .vbs 확장에 의해 저장된 간단한 브이비스크립트를 윈도우즈 시스템에서 두 번 클릭하여 실행할 수 있다.<ref name="위키"></ref> | ||
+ | |||
+ | ===사용 영역=== | ||
+ | 브이비스크립트는 범용 스크립팅 언어지만 몇 가지 특정 사용 영역이 주목할 만하다. 첫째, 마이크로소프트 환경에서 시스템 관리자들 사이에서 널리 사용되고 있다. 첫 번째로 이러한 상황은 윈도우 파워쉘(Windows PowerShell)의 프로모션 및 사용 증가에 따라 달라질 수 있다. 두 번째로 브이비스크립트는 테스트 자동화 툴인 퀵테스트 프로페셔널(Quick Test Professional)의 스크립팅 언어다. 세 번째로 주목해야 할 부분은 산업용 운영자 인터페이스와 휴먼 머신 인터페이스와 같은 일부 임베디드 애플리케이션의 내부 스크립팅 언어로 브이비스크립트를 채택한 것이다. 계층적 DBMS InterSystems Caché도 저장된 코드를 프로그래밍하기 위한 브이비스크립트, 캐시베이직의 구현을 지원한다. 브이비스크립트는 강력한 타이핑, 확장된 오류 트래핑 및 가변 개수의 매개 변수를 서브루틴으로 전달하는 기능과 같은 전체 비주얼 베이직의 몇 가지 유용한 기능을 생략한다. 그러나 학습이 용이하고, 브이비스크립트 트레이드 마크가 인정되는 한 해당 언어로 코드를 구현하는 사람들은 마이크로소프트에 로열티를 지불할 필요가 없기 때문에 그것의 사용은 비교적 널리 퍼져 있다. 여러 기업이 마이크로소프트로부터 VBA(Visual Basic for Applications)를 허가했을 때, 해당 제품과 함께 전체 VBA 코드 작성 및 디버깅 환경을 재분배할 수 있다. VBA 대신 브이비스크립트가 Outlook 97의 매크로 언어로 사용된다. 브이비스크립트는 윈도우즈 기반 환경에서 모니터링뿐만 아니라 일상적인 사무 작업을 자동화하는 데 효과적으로 사용할 수 있다. 서버 관리자, 마이크로소프트 오피스 사용자 및 기타 기술 제공자를 위한 최초의 선택 도구다. 효과적인 데이터베이스 연결을 위해 ADODB ActiveX Data Objects(ADODB)와 협력하여 사용할 수도 있다.<ref name="위키"></ref> | ||
{{각주}} | {{각주}} | ||
− | == 참고자료 == | + | ==참고자료== |
− | * | + | * VBScript 마이크로소프트 공식 홈페이지 - https://docs.microsoft.com/en-us/previous-versions//t0aew7h6(v=vs.85) |
− | * | + | * VB스크립트 위키백과 - https://ko.wikipedia.org/wiki/VB%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8 |
+ | * sssoh, 〈[https://sssoh.tistory.com/6 프로그래밍 언어의 종류와 특징]〉, 《티스토리》, 2012-01-17 | ||
+ | * 차민석, 〈[https://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=3&curPage=10&columnist=5&series_key=&seq=2105 악성스크립트의 종류와 역사 (2)]〉, 《안랩》, 2002-02-07 | ||
+ | * 오양, 〈[https://blog.naver.com/ohs792026/80010403498 스크립트]〉, 《네이버 블로그》, 2005-02-21 | ||
+ | * 김자까, 〈[https://blog.naver.com/rlarbtjq7913/221711007833 스크립트 언어(Script Language)란 무엇인가?]〉, 《네이버 블로그》, 2019-11-18 | ||
+ | * VBScript 위키백과 - https://en.wikipedia.org/wiki/VBScript | ||
+ | * VBScript Features 마이크로소프트 문서 도구 - https://docs.microsoft.com/en-us/previous-versions//273zc69c(v=vs.85) | ||
+ | * VBScript VBcript 위키백과 - https://en.wikipedia.org/wiki/VBScript VBcript | ||
+ | * 올인, 〈[http://blog.daum.net/allsky/13 vbscript 문법]〉, 《다음 블로그》, 2009-02-20 | ||
== 같이 보기 == | == 같이 보기 == | ||
16번째 줄: | 113번째 줄: | ||
* [[비주얼베이직]] | * [[비주얼베이직]] | ||
* [[마이크로소프트]] | * [[마이크로소프트]] | ||
+ | * [[닷넷]] | ||
− | {{프로그래밍| | + | {{프로그래밍 언어|검토 필요}} |
− | |||
− |
2020년 8월 6일 (목) 19:48 기준 최신판
브이비스크립트(VBScript)는 Visual Basic Scripting Edition의 약자로서, 미국 마이크로소프트 비주얼베이직(Visual Basic) 기반의 스크립트 프로그래밍 언어이다.
목차
개요[편집]
브이비스크립트는 마이크로소프트가 만든 액티브 스크립트 언어다. 문장마다 변환되어 해석, 실행되는 언어이며 윈도우 98 이후 OS에 기본으로 설치되어 있다. 브이비스크립트는 윈도우 스크립트를 사용하여 응용 프로그램을 호스팅한다. 바이러스의 대부분이 브이비스크립트로 만들어지는 사건이 발생해 사람들에게는 바이러스 만드는 언어로 많이 알려진 언어다.[1] 브이비스크립트는 마이크로소프트가 개발한 액티브 스크립트 언어이다. 이 언어의 구문은 마이크로소프트의 비주얼 베이직 프로그래밍 언어 계통의 일부를 반영한다. 브이비스크립트는 윈도우 98 이후의 여러 윈도우 운영체제에서 기본으로 설치되어 있으며, 윈도우 서버 운영 체제의 경우 윈도우 NT 4.0 옵션 팩 이후로 이용이 가능하다. 또, 실행 중인 장치의 목적과 구성에 따라 윈도우 임베디드 컴팩트(Windows Embedded Compact)에서도 선택적으로 이용이 가능하다. 초기에는 1970년대 말에 처음 개발된 배치 언어보다 더 강력한 자동화 도구 검색에 대한 지원을 윈도우 관리자로부터 받았다. 브이비스크립트는 호스트 환경 안에서 실행되어야 하며, 어떠한 환경에서는 마이크로소프트 윈도우의 표준 설치(윈도우 스크립트 호스트, 윈도우 인터넷 익스플로러) 위에 제공된다. 게다가 브이비스크립트 호스트 환경은 마이크로소프트 스크립트 컨트롤(msscript.ocx)과 같은 기술을 통해 다른 프로그램에 이식되는 경우가 있다.[2]
역사[편집]
- 브이스크립트의 개발
브이비스크립트는 1996년에 출시된 마이크로소프트 윈도우 스크립트 기술(Microsoft Windows Script Technologies)의 일부로 시작되었다. 이 기술은 처음에 웹 개발자를 대상으로 했다. 불과 2년 남짓한 기간 동안 브이비스크립트는 버전 1.0에서 2.0으로 발전했고, 그 기간 동안 1980년대 초에 처음 개발된 일괄 언어보다 더 강력한 자동화 도구를 찾는 윈도우 시스템 관리자로부터 지지를 얻었다.
- 1988년 3월 6일, 앨런 쿠퍼(Alan Cooper)는 빌 게이츠(Bill Gates)에게 위젯을 역동적으로 추가할 수 있는 그의 쉘 프로토타입을 보여주었다.
- 1991년 3월 20일, 마이크로소프트는 퀵베이직(Quick Basic)을 채택했다. 이를 통해 사용자는 GUI를 통해 빠르고 쉽게 윈도우 앱을 만들 수 있었다.
- 1996년 8월 1일, 인터넷 익스플로러(Internet Explorer)가 브이비스크립트를 포함하는 기능으로 만들어졌다.
- n 버전 5.0, 브이비스크립트의 기능은 정규식, 클래스, With 문, 다른 스크립트 실행 중에 작성된 스크립트 명령을 평가하고 실행하기 위한 Eval, ExecuteGlobal 기능, GetRef를 통한 함수와 점퍼 시스템 및 DCOM(Distributed COM) 지원을 포함한 새로운 기능으로 증가되었다.
- 버전 5.5에서는 서브매치(SubMatches)가 브이비스크립트의 정규식 클래스에 추가되어 마침내 스크립트 작성자가 표현식 그룹 내의 텍스트를 캡처할 수 있게 되었다. 그 기능은 이미 제이스크립트로 제공되었다. .NET 프레임 워크의 출현으로 스크립팅 팀은 웹 개발을 위해 ASP.NET 내에서 향후 브이비스크립트 지원을 구현하기로 결정했다. 따라서 브이비스크립트 엔진의 새 버전은 개발되지 않고 마이크로소프트에서 버그 수정 및 보안 기능 향상을 담당한다.[3]
- 브이비스크립트를 이용한 악성코드
브이비스크립트를 이용한 최초의 바이러스는 HTML 인터넷 바이러스로, 1998년에 나타났다. 초기의 브이비스크립트로 작성된 바이러스나 웜은 HTML 속에 브이비스크립트를 포함한 형태였고 사용자가 허락하지 않으면 실행되지 않는 문제가 있었지만 동일 제작자는 이후 조금씩 개량된 브이비스크립트를 이용한 악성 프로그램을 제작했다. 브이비스크립트 악성 프로그램을 발전시킨 사람은 자신을 Zulu로 부르는 아르헨티나 사람으로, 1999년 초에 발견된 Zulu는 브이비스크립트 바이러스 중 최초의 암호화 기법을 사용한다. 이후 그가 제작한 라누스(Lanus) 바이러스는 마이크로소프트에서 제공하는 암호화된 브이비스크립트를 이용한 최초의 바이러스이다.
- 2000년 2월 발견된 넷로그(Netlog) 웜은 독특하게 퍼지는 웜으로 임의의 아이피 어드레스를 내부적인 계산으로 구한 후, 파일의 읽기 및 쓰기가 가능한지 검사하고 쓰기가 가능하면 자신을 복사하는 형태로 되어 있다. 많은 기업에서 공유폴더를 사용하며 심지어 씨드라이브 전체를 읽기 및 쓰기로 공유하는 형태가 많다. 이 경우 넷로그 뿐 아니라 공유폴더로 퍼지는 유사 웜이나 바이러스에 쉽게 감염될 수 있으며, 다른 사람이 공유된 폴더의 파일 접근이 자유롭기 때문에 보안상 문제가 된다.
- 2000년 5월 26일 스테이지(Stages) 웜이 발견되었는데 이 파일은 에스에이치에스(SHS) 파일 형태로 실행하면 성적 농담을 출력해 사용자가 일반 텍스트 파일로 생각하게 한다. 브이비스크립트로 작성되었지만 에스에이치에스 파일 구조는 워드나 엑셀의 파일 포맷과 유사한 형태다.
- 2000년 6월 스페인에서 발견된 티모포니카(Timofonica)는 전형적인 브이비스크립트 웜이지만 한가지 특징적인 증상으로 유명해진 웜이다. 일부 언론에서 휴대전화단말기를 감염시키는 것으로 잘못 알려졌지만 실제로는 휴대전화단말기로 문자 메시지를 보낼 수 있지만 휴대전화단말기 자체를 감염시키지는 않는다.
- 2000년 9월에 발견된 퍼니(Funny)는 특정 온라인 뱅킹 시스템의 사용자 정보를 빼 갈 수 있는 트로이목마를 포함한 형태하고 있어 개인정보유출과 함께 범죄에 악용될 수 있는 바이러스이다.
- 2001년 5월에 발견된 햅타임(Haptime)과 변형들은 아웃룩 익스프레스의 보안상 취약성도 이용하며 HTML, 에이에스피, 브이비스크립트 등을 감염시키고 일부 버전은 HTA 파일 생성등 스크립트 바이러스가 할 수 있는 다양한 감염 기법을 사용한다.
- 2001년 4월과 8월에 브이비스크립트를 이용하는 Logo/Login, VBS/PeachyPDF가 발견되었다. 이들 웜은 VBS 파일 형태로 퍼지지 않고 메일 발송 기능을 가진 브이비스크립트를 파일로 만든 후 실행해 브이비스크립트의 기능을 이용해 첨부파일을 아웃룩으로 보내는 형태이다. 이런 방법은 아웃룩을 통한 메일 발송이 불가능한 언어나 프로그래밍 실력이 다소 떨어지는 바이러스 제작자들이 상대적으로 제작하기 쉬운 브이비스크립트를 이용해 바이러스가 포함된 파일을 메일로 발송하는 방법을 사용하고 있다.
- 2001년 중반 이후 브이비스크립트 등의 확장자는 아웃룩으로 메일 발송을 제한하는 새로운 오피스 제품군의 보급으로 브이비스크립트를 이용한 웜이나 바이러스는 감소하고 대신 초기에 써캠, 님다와 같은 윈도우 실행 파일형 웜이 다시 증가하게 되었다.[4]
특징[편집]
브이비스크립트는 썬 마이크로시스템즈와 넷스케이프(Netscape)의 자바스크립트 개발에 자극을 받아 마이크로소프트에서 개발한 클라이언트측 스크립트이다. 비주얼베이직의 일부 기능을 웹 환경에서 사용할수 있도록 작성되었다. 브이비스크립트는 인터넷 익스플로러 2.0이상에서 지원도고 있으나 리눅스나 유닉스 계열의 웹 브라우저에서는 브이비스크립트가 지원되지 않아 브이비스크립트가 코드가 포함된 웹 서버에 접근하면 화면이 깨져 알아보기 어려운 경우가 있다. 브이비스크립트의 장점은 전 세계 95% 이상의 사용자가 사용하고 있는 인터넷익스플로러 기본 스크립트 언어라는 것이다. 가장 배우기 쉬운 언어중 하나이며 빠른 시간 안에 프로그램을 작성할 수 있다. 브이비스크립트의 단점은 자바스크립트(JavaScript)와 마찬가지로 보안이 취약하다. 또한 익스플로러 이외의 웹 브라우저에서 거의 지원되지 않기 때문에 범용성에 문제가 있다.[5] 또한 브이비스크립트 파일은 웹브라우저 뿐 아니라 윈도우 98 이상에서 독립적으로 실행 가능하므로 바이러스 가능성이 커졌다. 그리고 브이비스크립트는 사용자 시스템의 파일이나 레지스트리를 생성, 변경, 삭제시 사용자 동의를 구하지 않기 때문에 마음대로 변경할 수 있고 이것은 보안에 문제가 생길 수 있다. 바이러스나 웜은 자기 자신을 복제할 수 있는 명령을 가지면 만들 수 있는데 브이비스크립트는 자기 복제 명령뿐 아니라 네트워크, 레지스트리, MAPI를 이용한 메일 전송 등 최근 바이러스가 필요한 거의 모든 기능을 제공하고 있다.[4]
문법[편집]
- 인식자 : 프로그래머가 선언하는 변수나 함수의 이름이 될 수 있는 단어를 말한다. 에이에스피 프로그래밍의 내부 연산 처리나 데이터 처리에서 가장 중요한 역할을 수행하는 인식자는 다음의 특징을 가지고 있다. 우선 에이에스피가 브이비스크립트를 기준으로 하기 때문에 브이비스크립트에서 지원하는 범위와 동일하다는 것을 알고 있어야 한다. 특징으로 문자와 숫자, _(under bar)로 이루어지고, 길이는 보통 255자 이내로 설정한다. 첫 문자는 숫자가 되어서는 안되고, 마지막 문자는 마침표(.)를 사용해서는 안 된다. 그리고 일반적으로 대소문자의 구분을 하지 않는다.
- 변수 : 변수를 선언하는 키워드는 dim이다.스크립트 언어의 특징 중 하나가 변수 선언 키워드를 생략할 수 있다. 생략하면 지역변수가 되는것이고 붙여 주면 전역변수가 된다.
- 상수 : 상수의 선언은 Const라는 키워드를 이용한다. 변수가 프로그램 코드에서 변하는 값을 저장하는 곳이라면 상수는 항상 똑같은 값을 저장하고 있는 곳이라 할 수 있다. 즉, 상수라는 것은 프로그래머나 시스템에 의해 미리 정해져있는 것으로, 복잡한 숫자의 값을 인지하기 쉬운 문자로 변경하여 사용하고자 할 때 주로 사용한다. 상수는 변수와는 다르게 코드가 끝날때 까지 유지가 되어서 상수값을 변경할 수가 없다.
- 데이터 형식 : 숫자 데이터 형식, 문자 데이터 형식, 날짜형 등으로 나눌 수 있다. 숫자 데이터는 정수형(Integer), 긴 정수형(Long), 바이트(Byte), 싱글(Single), 더블(Double), 통화(Currency) 가 있다. 문자 데이터는 큰따옴표만 사용하며 브이비스크립트에서 따옴표는 주석으로 사용된다. 날짜형 데이터는 날짜에 대한 정보를 저장하기 위해 사용하는 데이터 형식이다. 일반적인 날짜와 시간까지 저장이 가능하다. 에이에스피에서 현재의 날짜와 시간을 알고자 할 경우에 Now() 함수를 사용하여 결과를 출력할 수 있다. 이때 출력되는 형식이 날짜형에 저장될 수 있다. 일반적으로 날짜형의 변수는 #을 붙여 사용한다. 만일 #이 없다면 문자열이나 숫자 데이터형으로 변환된다. 이외의 에이에스피에서 지원하는 데이터형은 여러 가지가 있다. True나 False의 값을 저장하는 불린(Boolean)이나 전혀 값을 가지고 있지 않은 엠티(Empty), 데이터를 가지고 있지 않은 필드를 가리킬 때 사용하는 널, 객체를 나타내는 오브젝트(Object) 등이 있다.
- 연산자 : 산술 연산자, 관계연산자, 논리연산자 등으로 나뉜다. 산술 연산자는 산술(Arithmetic) 계산을 위한 연산자들이다. 기본적으로 가감승제의 작업을 수행한다. 관계 연산자의 관계(relational)라는 것은 둘 사이의 비교를 하여 결과를 얻는다는 말이다. 두 변수 사이의 관계를 알고자 할 때 사용되는 것을 관계 연산자라고 한다. 논리 연산자는 조건에 대한 논리(Logical) 연산을 하기 위한 연산자들이다. 논리곱, 논리합, 부정 등이 주로 사용되며 조건문에 주로 사용된다.[6]
스크립트[편집]
스크립트(script)란 컴퓨터 프로세서나 컴파일러가 아닌 다른 프로그램에 의해 번역되고 수행되는 명령문의 집합이라 할 수 있다. 연극 용어인 스크립트에서 유래되었으며 초창기 스크립트 언어는 배치언어(Batch Languages) 또는 작업 제어 언어(Job Control Language)라고도 부른다. 일반적으로 C 언어나 C++과 같은 컴파일러 언어보다 제한된 능력과 느린 실행 속도를 갖지만, 프로그램 작성 측면에서는 보다 쉽고 빠르다고 할 수 있다. 웹 클라이언트 서버 환경에서 보면 펄(Perl)은 웹서버에서, 자바스크립트는 클라이언트에서, 브이비스크립트는 서버와 클라이언트에서 실행된다. 스크립트는 문서를 써내려 가듯 쉽게 작성하는 프로그래밍 언어를 말하는 것으로 전문적인 지식이 없는 일반인도 비교적 쉽게 작성할 수 있다. 시스템 레벨의 컴퓨터 제어가 불가능하고 속도도 느린 편이지만, 인터넷의 발달과 함께 이용자들이 늘어가고 있다. 스크립트는 HTML과 함께 사용되어 보다 동적인 홈페이지를 만들 수 있게 해주며, 홈페이지와 방문자 사이의 의사 전달의 매개체로 많이 사용된다. 마우스 조작에 따른 반응은 스크립트 사용의 가장 대표적인 예라고 할 수 있다. 즉, 마우스 포인터가 그림 위에 위치했을 때 그림의 모양이나 색깔이 변경되도록 한다거나, 마우스로 상위 메뉴를 클릭했을 때 하위 메뉴가 펼쳐져 나타나는 것 등은 많이 사용되는 스크립트 효과의 예이다. 최근들어 가장 널리 사용되고 있는 것은 자바스크립트와 브이비스크립트이다. 자바스크립트는 기존의 자바(Java)를 일반인도 보다 쉽게 사용할 수 있도록 해보자는 의도에서 나왔고, 브이비스크립트도 같은 의도로 비교적 쉬운 언어인 비주얼베이직의 형식을 빌어 만들어졌다.[7]
언어[편집]
응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어를 가리킨다. 스크립트 프로그래밍 언어라고도 한다. 스크립트 언어는 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로그램의 언어와 다른 언어로 사용되어 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다. 스크립트 언어는 다른 응용 프로그램에 삽입되어서 동작하는 프로그래밍 언어다. 비(非)스크립트 언어인 C, C++, 자바 등은 컴파일(Compile) 된 후 독립적으로 작동하는 하나의 완전한 응용 프로그램이지만, 자바스크립트, 제이쿼리(jQuery), 제이에스피(JSP), 피에이치피(PHP), 에이에스피(ASP), 펄, 파이썬(Python), 루비(Ruby), 브이비스크립트 등의 스크립트 언어는 다른 응용 프로그램 안에 삽입되어 해석되는 방식으로 작동한다.[8]
종류[편집]
- 자바스크립트(JavaScript) : 미국 넷스케이프(Netscape)의 브렌든 아이크(Brendan Eich)가 개발한 스크립트 프로그래밍 언어이다. 자바스크립트는 표준 HTML 문서 내에 삽입되어 사용되며, 인터랙티브한 웹 페이지를 만들 수 있게 한다.
- 제이쿼리(jQuery) : HTML 문서에 삽입하여 사용할 수 있는 자바스크립트 라이브러리를 말한다. 단순하게 웹사이트를 만들 때 사용하는 일종의 도구라고 생각할 수 있다. 매우 쉽고 간단하기 때문에 HTML, CSS, 자바스크립트에 관한 기초지식만 있다면 짧고 단순한 코드로 다양한 효과를 연출할 수 있다.
- JSP(제이에스피) : 자바 서버 페이지(JavaServer Pages)의 약자로서, HTML 페이지 안에 자바 코드를 직접 삽입하여 웹서버에서 동적으로 웹 페이지를 생성하여 웹브라우저가 표현할 수 있도록 전달해 주는 스크립트 프로그래밍 언어이다. HTML 문서 안에 <% ... %> 기호를 쓰고 그 안에 자바 코드를 삽입하는 방식으로 사용한다. 서블릿(Servlet)은 자바 소스 코드 안에 HTML을 삽입하지만, JSP는 반대로 HTML 문서 안에 자바 코드를 삽입한다.
- PHP(피에이치피) : HTML 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어이다. 1994년 라스무스 러도프(Rasmus Lerdorf)가 개발했다. 원래 Personal Home Page의 약자였으나, 나중에 Hypertext Preprocessor의 약자라고 설명되었다. 리눅스 운영체제에 아파치 웹서버를 설치하고 마이에스큐엘(MySQL) DB 환경에서 PHP 프로그래밍 언어가 주로 사용되기 때문에 LAMP라는 말이 생겼다.
- ASP(에이에스피) : Active Server Pages의 약자로서, 미국 마이크로소프트의 윈도우 서버에서 운영되는 스크립트 방식의 웹 프로그래밍 언어이다.
- 펄(Perl) : "Practical Extraction and Report Language"의 약자로서, 유닉스 계열의 운영체제에서 사용하는 스크립트 프로그래밍 언어다. 1987년 래리 월(Larry Wall)이 개발하였다.
- 파이썬(Python) : 1990년 네덜란드의 귀도 반 로썸(Guido van Rossum)이 개발한 객체 지향 스크립트 프로그래밍 언어이다. 별도의 컴파일 과정이 필요 없어 개발기간이 단축되고, 리눅스나 윈도우 등 특정 플랫폼에 의존적이지 않고 독립적이다. 주로 장고(Django) 프레임워크 기반으로 개발한다.
- 루비(Ruby) : 1995년 일본의 마츠모토 유키히로(まつもとゆきひろ)가 만든 객체 지향 스크립트 프로그래밍 언어다. 파이썬과 유사하며 깃허브(GitHub) 사이트는 루비 언어를 사용하여 개발되었다.[8]
기능[편집]
브이비스크립트의 카테고리 별 기능은 배열 처리, 과제, 표현식, 상수/리터럴, 제어흐름, 날짜/시간, 선언, 오류처리, 문자열 서식지정, 입출력, 연산자, 문자열 등이 있다.[9] 윈도우 스크립트 호스트(Windows Script Host)에서 호스팅할 때 비주얼베이직 6.0 에서는 사용할 수 없다. 이 기능에는 간편한 액세스가 포함된다. 이름이 지정되고 이름이 지정되지 않은 명령 줄 인수, 런타임에 정의된 텍스트의 런타임 실행 방법은 평가 및 실행, 원격 컴퓨터에서 스크립트를 실행하는 방법은 WMI(Windows Management Instrumentation)이다. 널리 알려진 언어를 사용하여 브이비스크립트 엔진을 다른 응용 프로그램에 포함한다.
언어 기능[편집]
브이비스크립트의 언어는 비주얼베이직을 모델로 하기 때문에 절차, 제어 구조, 상수, 변수, 사용자 상호작용, 배열 처리, 날짜/시간 함수, 오류 처리, 수학 함수, 객체, 정규 표현식, 문자열 조작 등 유사한 범주를 사용하여 검토할 수 있다. 마이크로소프트에서 브이비스크립트 언어를 소개하는 몇 가지 핵심 사항들을 정리 보면 첫 번째로 "절차"는 코드를 더 작은 모듈로 분리하기 위한 브이비스크립트의 주요 구성물이다. 브이비스크립트는 할당문으로 결과를 반환할 수 있는 함수와 그렇지 않은 서브루틴을 구별한다. 매개변수는 위치적이며 값 또는 참조로 전달될 수 있다. 두 번째로 제어 구조에는 일반적인 반복 및 조건부 Do Loops, If-Then-Else 문 및 사례 문장이 포함되며, EscherIf 및 내포된 제어 구조와 같은 일부 복잡한 변형이 있다. 세 번째로 코딩 시 메모리 보조 도구로서, 가독성을 위해 논리 값의 경우, True 및 False, MsgBox 코드의 경우, vbOKCancel 및 vbYesNo, 색상 값의 경우, vbBlack 및 vbBYellow, 캐리지 리턴 문자의 경우, vbCR 등 많은 수의 상수가 있다. 네 번째로 변수는 기본적으로 "변수" 유형을 가지지만, 변환 함수(CInt, CDate 등)를 사용하여 특정 유형(정수, 날짜 등)을 강제하는 것이 가능하다. 다섯 번째로 사용자 상호 작용은 메시지 및 입력을 위한 간단한 대화 상자 형식을 제공하는 MsgBox와 입력 상자 기능을 통해 제공된다. 두 기능 모두 메시지를 표시하며, 전자는 표준 응답을 반환하고 후자는 사용자가 제공한 텍스트 또는 숫자 값을 반환한다. 제어장치와의 보다 정교한 GUI 상호작용을 위해, 예를 들어 HTML 애플리케이션에서 브이비스크립트를 HTML과 조합하여 사용할 수 있다. 비주얼베이직 또는 비주얼베이직 애플리케이션(Visual Basic for Applications)와 같이 이벤트 기반 양식은 지원되지 않는다. 마지막으로 이름은 대소문자를 구분하지 않는다. 그러나 일관성이 있고 현명하게 자본화하는 것이 브이비스크립트 스타일의 모범 사례로 간주된다.
프로그램 기능[편집]
윈도우즈 스크립트 호스트가 호스팅할 때 브이비스크립트는 스크립팅 언어에 공통적이지만 비주얼 베이직 6.0에서는 사용할 수 없는 다양한 기능을 제공한다. 이러한 기능에는 다음에 대한 직접 또는 손쉬운 액세스가 포함된다. 이름이 지정되고 이름이 지정되지 않은 명령줄 인수, 방향을 바꿀 수 있는 Stdin과 stdout은 콘솔에 쓰기 때문에 리디렉션할 수 없는 WSH.Echo, WSH.ExitCode는 도스(DoS) 배치 파일에서 또는 스크립트 파일을 호출한 프로세스에 의해 테스트될 수 있다. 네트워크 프린터, 네트워크 공유, 특수 폴더(예: 데스크톱, 즐겨찾기, MyDocuments 등) 그룹 구성원 자격과 같은 네트워크 사용자 정보, 런타임에 정의된 텍스트의 런타임 실행 방법(평가 및 실행), 원격 시스템에서 스크립트를 실행하는 방법, WMI(Windows Management Instrumentation) 널리 알려진 언어를 사용하여 브이비스크립트 엔진을 다른 애플리케이션에 내장하는 기능. 명령줄 실행자인 씨에스스크립트(CScript)는 다음을 위한 옵션을 제공한다. 대화형 또는 배치 모드, 명령줄에서 디버그 모드를 호출, 라인 번호를 포함한 오류 보고를 한다.[10]
추가 기능[편집]
파일 시스템 관리, 파일 수정 및 스트리밍 텍스트 작업은 스트립팅 런타임 라이브러리(Scripting Runtime Library)로 구현된다. 액티브엑스(ActiveX) 기술을 통해 기능을 추가 할 수도 있다. 프로그래머는 COM(ActiveX) 모듈을 통해 확장성을 활용하여 스크립트 호스트와 브이비스크립트에 필수 기능 또는 원하는 기능을 장착할 수 있다.[10]
개발환경[편집]
마이크로소프트 인터넷 익스플로러(Microsoft Internet Explorer)에서 클라이언트측 웹 개발에 사용할 경우 브이비스크립트는 자바스크립트와 기능이 유사하다. HTML 페이지에 내장되거나 포함된 실행 가능한 함수를 작성하고 페이지의 DOM(Document Object Model)과 상호 작용하여 HTML만으로는 불가능한 작업을 수행하는 데 사용된다. 그러나 파이어폭스(Firefox)나 오페라(Opera)와 같은 다른 웹 브라우저들은 브이비스크립트에 대한 지원이 내장되어 있지 않다. 즉, 클라이언트측 스크립팅과 크로스 브라우저 호환성이 필요한 경우 개발자는 대개 브이비스크립트를 통해 자바스크립트를 선택한다. 브이비스크립트는 또한 웹 페이지의 서버 측 처리에도 사용되며, 특히 마이크로소프트 액티브서버페이지(ASP, Active Server Pages)와 함께 사용된다. 에이에스피 엔진 및 유형 라이브러리(asp.dll)는 vbscript.dll을 호출하여 브이비스크립트를 실행한다. 에이에스피 페이지에 포함된브이비스크립트는 <% 및 %> 컨텍스트 스위치 내에 포함되어 있다. 브이비스크립트가 있는 에이에스피 페이지의 다음 예에서는 현재 시간을 24시간 형식으로 표시하지만 윈도우즈 운영 체제에서 오류 메시지의 기본 스크립트로도 사용된다. 또한 브이비스크립트를 사용하여 마이크로소프트 윈도우즈를 실행하는 워크스테이션에서 직접 실행되는 애플리케이션을 생성할 수 있다. 가장 간단한 예는 WSH(Windows Script Host) 환경을 사용하는 스크립트다. 이러한 스크립트는 일반적으로 파일 확장자가 .vbs인 독립 실행형 파일에 있다. 스크립트는 다음과 같은 두 가지 방법으로 호출할 수 있다. Wscript.exe는 대화 상자, 입력 상자 등 GUI를 통해 출력 및 입력을 표시하는 데 사용된다. 씨스크립트.exe는 명령줄 환경에서 사용된다.
브이비스크립트는 다음 두 가지 다른 유형의 스크립팅 파일에 포함될 수 있다. 윈도우스크립트 파일 및 HTML 응용 프로그램 WSF는 XML을 따르며 WSF 파일은 여러 브이비스크립트 파일을 포함할 수 있다. 결과적으로 WSF 파일은 코드 재사용을 위한 수단을 제공한다. 클래스나 기능의 라이브러리는 .wsf 파일에 포함될 수 있는 하나 이상의 .vbs 파일에 저장될 수 있기 때문에 기능은 모듈식으로 재사용될 수 있다. 파일 확장자는 .wsf이며 더블유에스스크립트(wscript)를 사용하여 실행할 수 있다..vbs 파일이 할 수 있는 것처럼 exe 또는 cscript.exe로 표현된다. HTML 뒤에 HTML 애플리케이션(HTA)을 스타일링하고, 파일에 있는 HTML을 사용하여 사용자 인터페이스를 생성하며, 프로그램 로직에는 브이비스크립트와 같은 스크립팅 언어가 사용된다. 파일 확장자는 .hta이며 mshta.exe를 사용하여 실행할 수 있다. 브이비스크립트는 다른 COM 지원 애플리케이션에서 호출할 수 있는 ActiveX 지원 스크립트 클래스인 윈도우즈 스크립트 구성 요소에서도 사용할 수 있다. 이 파일들은 확장명이 .wsc이다. 브이비스크립트는 간단하게 만들 수 있으며 메모장처럼 사용하기 쉬운 텍스트 편집기를 사용하여 코딩할 수 있다. .vbs 확장에 의해 저장된 간단한 브이비스크립트를 윈도우즈 시스템에서 두 번 클릭하여 실행할 수 있다.[10]
사용 영역[편집]
브이비스크립트는 범용 스크립팅 언어지만 몇 가지 특정 사용 영역이 주목할 만하다. 첫째, 마이크로소프트 환경에서 시스템 관리자들 사이에서 널리 사용되고 있다. 첫 번째로 이러한 상황은 윈도우 파워쉘(Windows PowerShell)의 프로모션 및 사용 증가에 따라 달라질 수 있다. 두 번째로 브이비스크립트는 테스트 자동화 툴인 퀵테스트 프로페셔널(Quick Test Professional)의 스크립팅 언어다. 세 번째로 주목해야 할 부분은 산업용 운영자 인터페이스와 휴먼 머신 인터페이스와 같은 일부 임베디드 애플리케이션의 내부 스크립팅 언어로 브이비스크립트를 채택한 것이다. 계층적 DBMS InterSystems Caché도 저장된 코드를 프로그래밍하기 위한 브이비스크립트, 캐시베이직의 구현을 지원한다. 브이비스크립트는 강력한 타이핑, 확장된 오류 트래핑 및 가변 개수의 매개 변수를 서브루틴으로 전달하는 기능과 같은 전체 비주얼 베이직의 몇 가지 유용한 기능을 생략한다. 그러나 학습이 용이하고, 브이비스크립트 트레이드 마크가 인정되는 한 해당 언어로 코드를 구현하는 사람들은 마이크로소프트에 로열티를 지불할 필요가 없기 때문에 그것의 사용은 비교적 널리 퍼져 있다. 여러 기업이 마이크로소프트로부터 VBA(Visual Basic for Applications)를 허가했을 때, 해당 제품과 함께 전체 VBA 코드 작성 및 디버깅 환경을 재분배할 수 있다. VBA 대신 브이비스크립트가 Outlook 97의 매크로 언어로 사용된다. 브이비스크립트는 윈도우즈 기반 환경에서 모니터링뿐만 아니라 일상적인 사무 작업을 자동화하는 데 효과적으로 사용할 수 있다. 서버 관리자, 마이크로소프트 오피스 사용자 및 기타 기술 제공자를 위한 최초의 선택 도구다. 효과적인 데이터베이스 연결을 위해 ADODB ActiveX Data Objects(ADODB)와 협력하여 사용할 수도 있다.[10]
각주[편집]
- ↑ VBScript 마이크로소프트 공식 홈페이지 - https://docs.microsoft.com/en-us/previous-versions//t0aew7h6(v=vs.85)
- ↑ VB스크립트 위키백과 - https://ko.wikipedia.org/wiki/VB%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8
- ↑ VBScript 위키백과 - https://en.wikipedia.org/wiki/VBScript
- ↑ 4.0 4.1 차민석, 〈악성스크립트의 종류와 역사 (2)〉, 《안랩》, 2002-02-07
- ↑ sssoh, 〈프로그래밍 언어의 종류와 특징〉, 《티스토리》, 2012-01-17
- ↑ 올인, 〈vbscript 문법〉, 《다음 블로그》, 2009-02-20
- ↑ 오양, 〈스크립트〉, 《네이버 블로그》, 2005-02-21
- ↑ 8.0 8.1 김자까, 〈스크립트 언어(Script Language)란 무엇인가?〉, 《네이버 블로그》, 2019-11-18
- ↑ VBScript Features 마이크로소프트 문서 도구 - https://docs.microsoft.com/en-us/previous-versions//273zc69c(v=vs.85)
- ↑ 10.0 10.1 10.2 10.3 VBScript VBcript 위키백과 - https://en.wikipedia.org/wiki/VBScript VBcript
참고자료[편집]
- VBScript 마이크로소프트 공식 홈페이지 - https://docs.microsoft.com/en-us/previous-versions//t0aew7h6(v=vs.85)
- VB스크립트 위키백과 - https://ko.wikipedia.org/wiki/VB%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8
- sssoh, 〈프로그래밍 언어의 종류와 특징〉, 《티스토리》, 2012-01-17
- 차민석, 〈악성스크립트의 종류와 역사 (2)〉, 《안랩》, 2002-02-07
- 오양, 〈스크립트〉, 《네이버 블로그》, 2005-02-21
- 김자까, 〈스크립트 언어(Script Language)란 무엇인가?〉, 《네이버 블로그》, 2019-11-18
- VBScript 위키백과 - https://en.wikipedia.org/wiki/VBScript
- VBScript Features 마이크로소프트 문서 도구 - https://docs.microsoft.com/en-us/previous-versions//273zc69c(v=vs.85)
- VBScript VBcript 위키백과 - https://en.wikipedia.org/wiki/VBScript VBcript
- 올인, 〈vbscript 문법〉, 《다음 블로그》, 2009-02-20
같이 보기[편집]