해커 공격을 더 잘 예방하는 방법에 대한 개인적인 의견을 말씀드리고 싶습니다! 첫째, 무료 프로그램을 무료로 사용해서는 안 된다. 원본 코드를 공유할 수 있기 때문에 공격자가 코드를 분석할 수도 있다. 세부 사항에 주의를 기울이면 사이트의 보안이 크게 향상됩니다. SQL 인젝션과 같은 취약점이 발생하더라도 공격자가 사이트를 즉시 폐쇄하는 것은 불가능합니다.
ASP의 편리성과 사용 용이성으로 인해 점점 더 많은 웹 사이트 백그라운드 프로그램에서 ASP 스크립팅 언어를 사용하고 있습니다. 그러나 ASP 자체에는 일부 보안 취약점이 있기 때문에 해커가 주의하지 않으면 이를 악용할 수도 있습니다. 실제로 보안은 네트워크 관리자만의 문제가 아니라 프로그래머도 특정 보안 세부 사항에 주의를 기울이고 좋은 보안 습관을 키워야 합니다. 그렇지 않으면 웹 사이트에 엄청난 보안 위험이 초래됩니다. 현재 웹사이트에 있는 대부분의 ASP 프로그램에는 이런저런 보안 허점이 있지만, 프로그램을 작성할 때 주의를 기울이면 이러한 허점을 피할 수 있습니다.
1. 사용자 이름과 비밀번호가 해킹됩니다.
공격 원칙: 사용자 이름과 비밀번호는 해커가 가장 관심을 갖는 부분입니다. 소스 코드가 어떤 방식으로든 노출되면 결과는 심각해집니다.
예방 기술: 사용자 이름 및 비밀번호와 관련된 프로그램은 서버 측에서 가장 잘 캡슐화되며 ASP 파일에는 가능한 한 적게 표시되며 데이터베이스 연결과 관련된 사용자 이름 및 비밀번호에는 최소한의 권한이 부여되어야 합니다. 자주 나타나는 사용자 이름과 비밀번호는 숨겨진 포함 파일에 기록할 수 있습니다. 데이터베이스에 연결하는 경우 저장 프로시저를 실행할 수 있는 권한만 부여하는 것이 가장 좋습니다. 레코드를 수정, 삽입 또는 삭제할 수 있는 권한을 사용자에게 직접 부여하지 마십시오.
2. 검증 우회
공격 원칙: 현재 검증이 필요한 대부분의 ASP 프로그램은 페이지 헤더에 판단문을 추가하고 있지만, 이것만으로는 해커가 검증을 우회하고 직접 진입하는 것이 가능합니다.
예방 기술: 확인이 필요한 ASP 페이지는 이전 페이지의 파일 이름을 추적할 수 있습니다. 이전 페이지에서 전송된 세션만 이 페이지를 읽을 수 있습니다.
3. Inc 파일 유출 문제
공격 원리: ASP가 포함된 홈페이지를 제작 중이고 디버깅 전에 완성되지 않은 경우 일부 검색 엔진에서 자동으로 검색 개체로 추가될 수 있습니다. 이때 누군가가 검색 엔진을 사용하여 이러한 웹 페이지를 검색하면 관련 파일의 위치를 얻을 수 있으며 브라우저에서 데이터베이스 위치 및 구조에 대한 세부 정보를 볼 수 있으므로 전체 소스 코드가 공개됩니다.
예방 팁: 프로그래머는 웹 페이지를 게시하기 전에 철저히 디버깅해야 합니다. 보안 전문가는 외부 사용자가 볼 수 없도록 ASP 파일을 강화해야 합니다. 첫째, .inc 파일의 내용을 암호화합니다. 둘째, .inc 파일 대신 .asp 파일을 사용하여 사용자가 브라우저에서 파일의 소스 코드를 직접 볼 수 없도록 할 수도 있습니다. inc 파일의 파일명은 시스템 기본값이나 사용자가 쉽게 추측할 수 있는 특별한 의미를 가진 이름을 사용하지 않아야 합니다.
4. 자동 백업 다운로드
공격 원리: 일부 ASP 프로그램 편집 도구에서는 ASP 파일을 생성하거나 수정할 때 편집기가 자동으로 백업 파일을 생성합니다. 예를 들어 UltraEdit은 이후에 생성하거나 수정하면 .bak 파일을 백업합니다. some.asp를 수정하면 편집기는 some.asp.bak라는 파일을 자동으로 생성합니다. 이 bak 파일을 삭제하지 않으면 공격자가 some.asp.bak 파일을 직접 다운로드할 수 있으므로 some.asp의 소스 프로그램이 다운로드됩니다.
예방요령: 프로그램을 업로드하기 전에 주의 깊게 확인하고 불필요한 문서를 삭제하세요. BAK 접미사가 붙은 파일에는 특히 주의하세요.
5.
특수 문자 공격의 원리: 입력 상자는 해커의 표적입니다. 입력 상자에 데이터 쿼리가 포함되어 있으면 사용자 클라이언트에 피해를 줄 수 있으며, 더 많은 데이터베이스 데이터를 얻기 위해 특수 쿼리 문을 사용합니다. 또는 심지어 전체 테이블. 따라서 입력 상자를 필터링해야 합니다. 그러나 효율성 향상을 위해 입력 유효성 검사가 클라이언트에서만 수행되는 경우 여전히 우회될 수 있습니다.
예방 기술: 게시판, 게시판 등 입력 상자를 처리하는 ASP 프로그램에서는 HTML, JavaScript, VBScript 문을 차단하는 것이 가장 좋습니다. 특별한 요구 사항이 없으면 문자와 숫자의 입력을 문자 및 숫자로만 제한할 수 있습니다. 숫자 및 블록 특수 문자. 동시에 입력 문자의 길이가 제한됩니다. 그리고 클라이언트 측에서 입력 유효성 검사를 수행해야 할 뿐만 아니라 서버 측 프로그램에서도 유사한 검사를 수행해야 합니다.
6.
데이터베이스 다운로드 취약점 공격의 원리: Access를 백엔드 데이터베이스로 사용할 때 누군가가 다양한 방법을 통해 서버의 Access 데이터베이스 경로 및 데이터베이스 이름을 알거나 추측하면 Access 데이터베이스 파일도 다운로드할 수 있으므로 매우 위험합니다. . 의.
예방 팁:
(1) 데이터베이스 파일에 복잡하고 색다른 이름을 지정하고 여러 디렉터리에 배치합니다. 소위 "비전통적인", 예를 들어 책에 대한 정보를 저장하려는 데이터베이스가 있으면 "book.mdb"라는 이름을 지정하지 말고 d34ksfslf와 같은 이상한 이름을 지정하십시오. , 그리고 ./kdslf/i44/studi/와 같은 여러 디렉터리에 저장하면 해커가 추측을 통해 Access 데이터베이스 파일을 얻는 것이 훨씬 더 어려워집니다.
(2) 프로그램에 데이터베이스 이름을 쓰지 마십시오. 어떤 사람들은 프로그램에 DSN을 작성하는 것을 좋아합니다. 예:
DBPath = Server.MapPath("cmddb.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
누군가 소스 프로그램을 얻으면 귀하의 Access 데이터베이스 이름이 한눈에 보입니다. 따라서 데이터 소스를 ODBC로 설정한 후 프로그램에 다음과 같이 작성하는 것이 좋습니다.
conn.open "shujiyuan"
(3) Access를 사용하여 데이터베이스 파일을 인코딩하고 암호화합니다. 먼저 "도구 → 보안 → 데이터베이스 암호화/해독"에서 데이터베이스(예: Employer1)를 선택한 다음 확인을 클릭하면 "데이터베이스 암호화된 다른 이름으로 저장" 창이 나타납니다. .mdb".
위 작업은 데이터베이스에 대한 비밀번호를 설정하는 것이 아니라 데이터베이스 파일을 인코딩하는 것뿐입니다. 그 목적은 다른 사람이 데이터베이스 파일의 내용을 보기 위해 다른 도구를 사용하는 것을 방지하는 것입니다.
다음으로 데이터베이스를 암호화합니다. 먼저 인코딩된 Employee1.mdb를 엽니다. 열 때 "독점" 모드를 선택합니다. 그런 다음 메뉴에서 "도구 → 보안 → 데이터베이스 비밀번호 설정"을 선택한 후 비밀번호를 입력하십시오. 이렇게 하면 다른 사람이 Employee1.mdb 파일을 입수하더라도 비밀번호 없이는 Employee1.mdb의 내용을 볼 수 없습니다.
7. 원격 주입 공격 방지
이러한 종류의 공격은 POST 공격과 같이 과거에 비교적 일반적인 공격 방법이어야 합니다. 공격자는 공격 목적을 달성하기 위해 제출할 데이터 값을 마음대로 변경할 수 있습니다. COOKIES 위조는 프로그래머나 웹마스터의 주의를 끌게 됩니다. 사용자 인증 방법으로 COOKIES를 사용하지 마십시오.
예를 들어,
Trim(Request.cookies (" uname"))=" fqy" 및 Request.cookies("upwd") ="fqy#e3i5.com" 다음
……..더…………
프로그램 작성을 좋아하는 모든 웹마스터나 친구들은 이런 실수를 해서는 안 된다고 생각합니다. 정말 용서할 수 없는 일입니다. 우리는 수년 동안 쿠키를 만들어 왔습니다. 아직도 쿠키를 사용하고 있다면 다른 사람이 쿠키를 훔쳤다고 비난할 수는 없습니다
.
사용자 비밀번호나 사용자 로그인에 관해서는 가장 안전한 세션을 사용하는 것이 좋습니다. 쿠키를 사용하려면 세션 ID라는 정보를 하나 더 추가하세요. 64비트입니다. 불가능합니다. 예:
그렇지 않은 경우(rs.BOF 또는 rs.eof)
로그인 = "참"
세션("사용자 이름"&세션ID) = 사용자 이름
세션("비밀번호"& 세션ID) = 비밀번호
'Response.cookies("username")= 사용자 이름
'Response.cookies("Password") = Password
원격 주입 공격을 방지하는 방법에 대해 이야기해 보겠습니다. 일반적인 공격은 단일 양식 제출 파일을 로컬로 끌어서 Form ACTION="chk.asp"를 서버로 지정하는 것입니다. 데이터 파일이면 충분합니다. 모든 데이터 필터링이 단일 테이블 페이지에 있으면 축하합니다.
이러한 원격 공격을 어떻게 방지할 수 있습니까? 다음과 같습니다: 프로그램 본문( 9)
<%
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
mid(server_v1,8,len(server_v2))<>server_v2이면
response.write "<br><br><center>"
응답.쓰기 " "
response.write "제출한 경로가 잘못되었습니다. 사이트 외부에서 데이터를 제출하는 것은 금지되어 있습니다. 매개변수를 변경하지 마세요!"
응답.쓰기 "
"
응답.끝
종료하면
%>
'개인적으로는 위의 코드 필터링이 별로 좋지 않다고 생각합니다. 일부 외부 제출이 아직 공개적으로 들어올 수 있으므로 또 다른
필터링 효과가 있으므로instr(request.dll을
사용하는 것이 좋습니다.
.servervariables("http_referer" )," http://"&request.servervariables("host ") )<1 then response.write "URL을 처리하는 동안 서버에서 오류가 발생했습니다.
어떠한 방법으로든 서버를 공격하는 경우 , 그러면 귀하의 모든 작업이 서버에 기록되었습니다. 우리는 귀하의 IP를 조사하기 위해 가능한 한 빨리 공안국과 국가 안보부에 통보할 것입니다
.
종료하면
프로그램 본문(9)은
이것으로 모든 것이 괜찮을 것이라고 생각하고 양식 페이지에 최대 길이 등 몇 가지 제한 사항을 추가했습니다. 그러나 하나님은 너무 불친절하므로 무언가를 두려워할수록 그럴 가능성이 더 높습니다. 공격할 것입니다. 작성자는 SQL 주입 공격 중에 입력 상자 길이의 한계를 돌파할 수 있습니다. HTTP_REFERER를 변경하려면? 나는하지 않을 것이다. 이러한 기사가 온라인에 게시되었습니다:
------------len.reg----
Windows 레지스트리 편집기 버전 5.00
[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExtExtensions]
@="C:Documents and SettingsAdministratorDesktoplen.htm"
"컨텍스트"=dword:00000004
----------끝---------------------
----------len.htm----
----------end---------
사용법: 먼저 len.reg를 레지스트리로 가져오고(파일 경로 참고
) 그런 다음 len.htm을 레지스트리의 지정된 위치에 복사하십시오.
웹 페이지를 열고 길이를 변경할 입력 상자에 커서를 놓고 마우스 오른쪽 버튼을 클릭하십시오. 확장이라는 옵션이 나타나면
완료를 클릭하십시오. : 입력 내용을 제한하는 스크립트를
어떻게 처리
할 수 있나요 ?우리의 한계는 면했고 우리의 모든 노력은 물거품이 되었습니까? 아니요, 키보드를 들고 아니요라고 말하세요. 스크립트 문자 필터링으로 돌아가서 그들이 수행하는 주입은 스크립트 공격에 지나지 않습니다. ACTION 이후의 페이지에 모든 에너지를 쏟겠습니다. chk.asp 페이지에서 모든 불법 문자를 필터링해 보겠습니다. 결과는 무엇입니까? 우리는 단지 우리 앞에서 허위 정보를 제공하고 레지스트리를 변경하도록 요청했을 뿐이며 변경이 완료되어야만 그들은 자신이 한 일이 헛된 것임을 깨닫게 될 것입니다.
8.
여기서는 ASP 트로이 목마에 대해 이야기했으며 모든 포럼 웹마스터에게 파일을 업로드할 때 주의하라고 상기시키고 싶습니다. 포럼 프로그램이 손상된 후 호스트도 공격자가 점유하는 이유는 무엇입니까? 그 이유는... 그렇죠! ASP 트로이목마! 절대적인 혐오입니다. 바이러스? 아니요. 파일을 포럼 프로그램에 넣으면 언제든지 찾을 수 있습니다. 피를 토하지 않는 것이 이상할 것이다. ASP 트로이 목마가 서버에 업로드되는 것을 어떻게 방지할 수 있습니까? 방법은 매우 간단합니다. 포럼에서 파일 업로드를 지원하는 경우, 업로드할 파일 형식을 설정하세요. 변경 가능한 파일 형식의 사용에 동의하지 않습니다. 프로그램에서 직접 잠그는 것은 이미지 파일 형식과 압축 파일뿐입니다. 그렇습니다. 자신에게 더 많은 편의를 제공하면 공격자에게도 더 많은 편의를 제공하게 됩니다. 형식을 결정하는 방법은 무엇입니까? 여기에서 하나를 모아서 수정했습니다.
프로그램 본문(10)
'파일 형식이 적합한지 여부를 판단합니다(fileEXT).
희미한 포럼업로드
Forumupload="gif,jpg,bmp,jpeg"
포럼업로드=분할(포럼업로드,",")
i=0에서 ubound까지(포럼업로드)
if lcase(fileEXT)=lcase(trim(Forumupload(i))) 그러면
CheckFileExt=true
종료 기능
또 다른
CheckFileExt=false
종료하면
다음
기능 종료
'파일 콘텐츠
세트 MyFile = server.CreateObject("Scripting.FileSystemObject")
의 적법성을 확인합니다.
set MyText = MyFile.OpenTextFile (sFile, 1) ' 텍스트 파일 읽기 sTextAll = lcase(MyText.ReadAll): MyText.close
'사용자 파일에서 위험한 작업 확인 sStr = "8 .getfolder .createfolder .deletefolder .createdirectory
.delete디렉토리"
sStr = sStr & " .saveas wscript.shell script.encode"
sNoString = 분할(sStr," ")
i = 1에서 sNoString(0)까지
instr(sTextAll, sNoString(i)) <> 0이면
sFile = Upl.Path & sFileSave: fs.DeleteFile sFile
Response.write "<center><br><big>"& sFileSave &"파일에는 운영 디렉터리 등에 관련된 명령이 포함되어 있습니다."&_
"<br><글꼴 색상=빨간색>"& mid(sNoString(i),2) &"</font>, 보안상의 이유로 <b>는 업로드할 수 없습니다. <b>"&_"</big>< /센터></html>"
응답.끝
종료하면
다음
보안
이 크게 향상됩니다.
아직도 걱정이 되시나요? 비장의 카드를 들고 웹 호스팅 서비스 제공업체에 도움을 요청하세요. 서버에 로그인하여 PROG ID에서 "shell.application" 및 "shell.application.1" 항목의 이름을 바꾸거나 삭제하세요. 그런 다음 "WSCRIPT.SHELL" 항목과 "WSCRIPT.SHELL.1"의 이름을 바꾸거나 모두 삭제합니다. 하하, 아마도 중국의 가상 호스트 중 절반 이상이 변하지 않았을 것이라고 감히 말씀드릴 수 있습니다. 귀하의 사용자들이 매우 협조적이어서 다행입니다. 그렇지 않으면... 삭제하겠습니다, 삭제하겠습니다, 삭제하겠습니다, 삭제하겠습니다...