전체 글 19

input 태그에서 알파벳, 숫자, 언더바만 입력 받기

keypress 이벤트로 처리를 하면 한글로 바꾼후 타이핑하면 의미가 없게 된다. input 이벤트에서 처리를 해야 IME 입력도 대처할 수 있다. 1. input 태그에 아래와 같이 이벤트를 건다. 2. onlyAlphaNum 함수를 아래와 같이 작성한다. function onlyAlphaNum(input) { const regex = /^[A-Za-z0-9_]*$/; // 영문, 숫자, 언더바만 허용하는 정규 표현식 if (!regex.test(input.value)) { // 입력된 값이 정규 표현식과 맞지 않으면 값을 수정 input.value = input.value.replace(/[^A-Za-z0-9_]/g, ''); } } 위와 같이 하면 입력언어를 바꿔도 영문, 숫자, 언더바만 입력받는것..

웹프로그래밍 2024.01.11

ASP.NET MVC - 비동기로 호출하여 JSON 객체를 받기

시나리오 : form 페이지에서 submit될 때 비동기로 액션을 호출한다. 이때 사용자로부터 입력을 못받게 회색 레이어로 덮어준다. 액션에서는 json 객체를 반환한다. 1. 액션에서 익명객체 생성하여 Json으로 반환 public class AjaxTextController : Controller { ... [HttpPost] public ActionResult SubmitForm(FormCollection fc) { string p1 = fc["p1"] == null ? "" : fc["p1"].ToString(); string p2 = fc["p2"] == null ? "" : fc["p2"].ToString(); for (int i = 0; i < 10; i++) { Thread.Sleep(10..

웹프로그래밍 2024.01.10

SMTP서버 구축 및 SPF(TXT) 레코드 수정

윈도우 서버를 사용하고 있고, SMTP서버를 설치하여 메일을 보내는데, 메일이 수신이 되지 않는 경우에 본 포스팅을 참고하면 됩니다. SMTP설정오류로 인해 서버아이피가 차단된 경우 SMTP서버를 비활성화 시킨다. 메일회사에 연락하여 차단된 아이피를 살려달라고 요청한다. 아래 절차로 로컬smtp 사용 가능하도록 설정한다. SMTP서버를 127.0.0.1로 활성화 시킨다. 서버에 SMTP를 설치하기 전에 해당 서버 아이피가 블랙리스트는 아닌지 체크를 해본다. 사이트0 https://whatismyipaddress.com/blacklist-check ( korea.services.net 은 한국사이트는 항상 차단하니 무시 ) 사이트1 https://www.spamhaus.org/query/bl?ip=서버아이..

보안 2024.01.05

netstat를 이용해서 네트워크 상태(백도어 탐지)를 분석하는 방법(윈도우)

해커는 피씨나 서버를 해킹하게 되면 숨어있다가 적절한 시간에 명령을 내리기 위해 외부에서 서버로 연결할 수 있도록 백도어를 설치해 놓을 수 있다. 이 백도어를 찾으려면 현재 피씨에서 어떤 서비스가 열려있는지.. 누가 접속해 있는지를 파악할 수 있어야 되는데, netstat 유틸리티를 통해서 어느정도 파악을 할 수 있다. 윈도우는 자체적으로도 많은 서비스들이 기본적으로 오픈이 되니, 알게 모르게 외부 연결을 대기하는 서비스들이 존재한다. 필요없는 서비스들은 중지하거나, 방화벽에서 차단을 해야 되는데 이를 지속적으로 신경쓰기란 쉬운것이 아니다. netstat 사용법은 운영체제마다 옵션이나 방법이 약간 다를수 있는데, 여기서는 윈도우 기준으로 설명한다. ​ 명령 netstat -na ​ 위와 같이 -na 옵션..

보안 2024.01.04

MSSQL 백업/복구 정리

데이터베이스를 생성하면 mdf 파일과 ldf 파일이 생성이 된다. mdf 파일은 데이터파일이고, ldf 파일은 로그파일인데, mdf에는 실제 데이터가 저장이 된다. 그리고, ldf 파일은 직전 로그백업 이후의 변경 사항에 대해 저장이 된다. 데이터베이스는 어떤 백업을 할지에 따라 복구모델을 지정해줘야 한다. ​ ​ 데이터베이스 복구모델 ​ 전체 복구모델(Full Recovery Model) 로그백업을 할 수 있게 해준다. 최종 상태 뿐만 아니라 원하는 시점 까지만 복구하는것도 가능하다. ​ 대량로그 복구모델 (Bulked-Log Recovery Model) 로그백업을 할 수 있는 것은 “전체 복구모델”과 같으나, 특정 시점 복구는 지원하지 않는다. 단, 그만큼 속도 면에서 “전체 복구모델”보다 유리하다...

MS 2024.01.04

USB 파일 복사시 Lastwritetimeutc 에 차이가 나는 생기는 원인

파일에서 마우스 우클릭해서 속성에 들어가면 파일이 언제 만들어졌는지, 언제 마지막으로 수정되었는지에 대한 정보를 볼 수 있다. 그런데, 꼭같은 파일이어도 디스크의 포맷방식에 따라 저장되는 시간이 달라질 수 있으므로, 프로그래밍시 이 시간정보를 이용할 경우 조심해야 될 내용으로 생각이 된다. ​ 구글 드라이브로 소스파일들을 동기화하여 회사와 집에서 작업을 주로 하는데, 어느날 집에서 작업한 파일이 동기화가 되어 있지 않음을 우연히 확인하고 실제 작업경로를 동기화 폴더로 사용하기에는 위험부담이 있다는 것을 느꼈다. ​ 그래서, 간단한 폴더 백업툴을 만들어 D드라이브와 USB에 동시에 백업하는 프로그램을 만들었다. 복잡한 로직을 사용한 것은 아니고, 그냥 파일이 없어졌으면 백업본에서 지우고, 파일이 새로 생긴..

MS 2024.01.04

비트로커 랜섬웨어 경험담

토요일 오후... 고객으로부터 홈페이지 접속이 안된다는 연락이 왔다. ​ "일시적인 장애인가..." ​ 폰으로 사이트 접속을 해보니 404 오류가 발생하였다.. 평소에 일시적인 장애가 발생할 때와 다른 증상이었다.. ​ "404 오류가 왜 발생하지?" "어??? 404는 서버와는 통신이 정상적으로 되었고... 다만, 클라이언트가 요청한 페이지를 찾을수 없다는 오류가 아닌가..." ​ 순간 등골이 오싹해져왔다... ​ "원격데스크톱"으로 서버에 접속해보니.. 아래와 같은 창이 뜬다.. Just for money If you want to unlock the server and data, please contact us jin423f4345@ctemplar.com ================ 서버와 데이터..

보안 2024.01.04

C# 텔레그램 메시지 보내기(No 라이브러리)

Nuget에 있는 Telegram.Bot 은 닷넷 4.6 이상 지원이 된다. 그래서, 닷넷4 에서는 사용할수 없다. 그래서 좀 불편하지만, 텔레그램 URL을 직접 호출해주는 식으로 구현을 한 소스를 남겨둔다. ​ 필요하신분 테스트해보시길.. using System.Web; // HttpUtility using System.Net; // WebClient string apikey_발신로봇 = "~~~~"; // 발신로봇의 api-key string chatid_수신자 = "~~~~"; // 수신자의 chat-id string message = HttpUtility.UrlEncode(msg.Replace("\r\n", "\n").Replace("\\n", "\n")); string url = $"https:..

MS 2024.01.04

system32폴더와 syswow64폴더

64비트 윈도우즈에서 GetSystemDirectory 함수를 호출하면 어떤 결과가 나올까. 만약 32비트 프로세스에서 실행을 한다면 c:\windows\system32 가 나오게 된다. 그리고, 64비트 프로세스에서도 마찬가지로 c:\windows\system32 가 나오게 된다. 하지만 이건 같은것이 아니다. 32비트 프로세스에서 c:\windows\system32 폴더에 뭔가를 쓰게 되면 실질적으로는 c:\windows\syswow64 폴더에 써지게 된다. 즉, 내부적으로 저렇게 리다이렉트가 되는 것이다. 경로를 코드상에 c:\windows\system32 로 하드코딩한 경우도 있을 것이고 GetSystemDirectory 같은 거로 구했을 수도 있을 것이다. 두 경우 다 보이기에는 c:\windo..

MS 2024.01.04

첨부파일 용량제한 처리하기(html, javascript)

첨부파일 용량은 서버에서 제한을 하게 된다. 본 포스팅은 서버설정은 다루지 않고, 오로지 클라이언트에서 사전 체크해주려고 할 때 참고하면 된다. 서버에서만 제한하고 클라이언트에서 체크하지 않으면, 원치 않는 오류를 만나게 된다. ​ 제한할 용량은 다음 수식으로 계산할 수 있다. ​ 메가바이트 * 1024 * 1024 ​ 즉, 10메가로 용량을 제한하려면 아래와 같이 변수 정의를 한다. 이제, input 태그에 onchange 이벤트를 걸어준다.

웹프로그래밍 2024.01.04