Google이 작동하는 방식. Google을 통한 해킹으로부터 자신을 보호하는 방법

방명록이란?

물론 여기에서는 가장 대표적인 방명록에 대해 이야기하고 있습니다. 우선, 이것은 사용자에게 텍스트를 입력하고, 특정 사이트에 대한 평가를 선택하고, 자신의 데이터(이름, 이메일, http 등)를 지정하는 기능을 제공하는 시스템입니다. 또한 탐색 기능과 함께 다양한 사용자가 입력한 데이터를 표시하고 메시지 작성자에게 이메일을 보낼 수 있는 시스템입니다. 다른 설정과 규범 어휘의 통제에 따른 변형도 있습니다.

우리는 무엇이 필요한가

물론 독자가 ASP 및 SQL 프로그래밍의 기본 사항에 익숙하다고 가정합니다. 또한 Microsoft SQL Server 7.0 또는 2000, HTML 또는 텍스트 편집기(Macromedia Dreamweaver UltraDev 4.0 사용 권장) 및 약간의 인내심이 필요합니다.

데이터베이스 생성 및 준비

사용자가 입력한 데이터의 저장을 구성하려면 사용자 이름, 이메일 주소, 거주 국가, 사이트 주소, IP 주소, 사이트 사용자 평가 값을 5점 척도로 저장하기 위한 필드를 만들 수 있는 하나의 테이블이 필요합니다. 등.:

시스템을 기존 사이트에 쉽게 통합하려면 색상 및 기타 설정을 저장할 다른 테이블을 계획하는 것이 좋습니다. 이렇게 하면 방명록 응용 프로그램 모듈의 소스 텍스트에서 해당 매개변수를 변경하지 않고 나중에 지정된 설정을 변경할 수 있습니다.

  • 데이터 원본 ODBC 구성기 - 시작->설정->제어판->관리 도구->데이터 원본 ODBC를 실행합니다.
  • 시스템 DSN 탭으로 이동하고 추가…를 클릭하여 새 데이터 소스를 생성합니다.
  • 나타나는 드라이버 목록에서 데이터베이스 드라이버 - Microsoft SQL Server를 선택하고 다음을 클릭합니다.
  • 데이터 소스 이름 행에 데이터베이스 이름을 지정하십시오(설명된 예에서 Gustbook은 향후 참조할 이름입니다).
  • 서버 라인에서 연결할 서버를 지정하고 다음을 클릭합니다.
  • 인증 모드 선택 With SQL Server…, 사용자 이름과 암호를 설정하여 SQL 서버에 연결합니다. 서버 통신 프로토콜(클라이언트 구성 - TCP/IP 버튼)을 정의하고 다음을 두 번 클릭한 후 마침을 클릭합니다.
  • 취한 조치에 대한 통계를 볼 수 있으며 데이터 소스 테스트 버튼을 사용하여 데이터 소스를 확인할 수 있습니다.
  • 결과적으로 시스템의 데이터 소스 목록에 줄이 표시됩니다.

데이터베이스가 준비되었으므로 바로 방명록 작성을 진행할 수 있습니다.

기성품 웹사이트에 시스템 통합

방명록 자체가 말이 안 되는 게 분명하다. 스스로 판단하세요: 독자의 의견을 수집하기 위해 설계된 사이트가 필요한 사람. 결국 어떤 것에 대한 의견을 수렴하기 위해서는 먼저 이것을 그들의 판단에 제시해야 합니다. 따라서 기성 사이트에 시스템을 임베딩하는 단순화와 관련된 문제에 특별한주의를 기울일 필요가 있습니다.

특히, 특정 사이트의 특성에 맞게 시스템을 쉽게 사용자 정의할 수 있도록 하기 위해 (위에서 언급한 바와 같이) 귀하의 사이트에 특정한 특정 값을 입력하기 위해 이러한 모든 기본 설정을 저장하는 특수 테이블을 만드는 것이 좋습니다. 그것에. 이 접근 방식의 명백한 이점은 시스템을 이미 완성된 사이트에 포함하기 위해 모듈의 소스 코드를 변경할 필요가 없으며 해당 데이터베이스 테이블의 설정만 변경하면 된다는 것입니다.

다음과 같은 테이블 구현의 예를 상상해 보십시오.

보시다시피 시스템 설정 모드에 접근하기 위한 이름과 비밀번호, 사용자 메시지의 주요 배경색, 상단 및 하단 프레임에 대한 정보를 저장하는 필드가 있습니다(각각 Mid_Color, Top_Color, Bot_Color 필드) , 사용자 데이터 입력에 사용되는 양식 헤더의 색상 및 크기(각각 Form_Color 및 FormTitleSize 필드), 메시지 자체 텍스트의 색상, 크기 및 글꼴 스타일, 정보 필드 및 방명록 페이지 자체(각각 MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize 및 PageFontFace), 필드를 전환하여 담당자에게 전자 메일로 새 메시지 알림을 자동으로 보낼 수 있도록 합니다(예: 관리자 또는 사이트 관리자), 담당자의 이메일 주소 저장 필드, 사용자가 남긴 메시지에 대한 감사 메시지 텍스트, 목록 포함 불가 x 단어 및 해당 필터링 모드에 대한 스위치(후자가 활성화된 경우 잘못된 단어 목록의 단어는 메시지 텍스트에서 자동으로 별표로 대체되므로 사이트 텍스트의 어휘 규범성을 제어할 수 있습니다. 운동).

방명록 통합 시스템의 개발은 우리가 고려한 모든 매개변수(관리 테이블의 필드)를 설정하기 위한 웹 인터페이스의 구성을 의미합니다.

시스템을 순수한 형태로 이미 완성된 사이트에 통합하면 예를 들어 특정 사이트에서 방명록을 일시적으로 비활성화해야 하는 경우 소스 텍스트의 인식과 미래에 약간의 어려움이 발생할 수 있습니다. 따라서 우리는 완성된 사이트에 통합이 어렵지 않은 방식으로 시스템을 개발하려고 노력할 것입니다. 이를 위해서는 시스템의 독립적인 모듈을 구성하여 필요한 경우 메인 사이트의 텍스트에 포함시켜야 합니다. 예를 들어 웹사이트 페이지의 텍스트는 다음과 같을 수 있습니다.

은 접시에 ASP (파트 - 15) – 방명록

보시다시피 첫 번째 경우에는 방명록이 있는 페이지를 포함하라는 지시()은 올바른 위치에 표시하고, 두 번째 경우에는 원본 사이트의 페이지를 시작, 방명록 페이지, 끝의 세 가지 요소가 순차적으로 포함된 형태로 간단하게 표시합니다. 사이트의 페이지 구조를 이런 식으로 구성하는 것은 취향의 문제이며 원래 사이트의 구조와 복잡성 정도에 따라 다릅니다.

방명록 메인 페이지(Guest.asp 파일)

제시된 응용 프로그램에는 사용자 메시지를 표시하고 새 메시지를 탐색하고 입력하는 데 사용할 수 있는 단 하나의 페이지만 있습니다. 키 매개 변수의 값에 따라 하나 또는 다른 작업이 수행되고 페이지는 한 상태 또는 다른 상태가 됩니다. 우선, 사용자 메시지를 표시하고 새 메시지를 추가하는 역할을 하는 부분에 대한 링크를 포함하는 해당 부분을 개발해야 합니다.

먼저 문자열 작업을 위한 몇 가지 함수를 작성해 보겠습니다.

  1. 빈 문자열을 공백으로 바꾸고 작은따옴표를 큰따옴표로 바꾸는 함수:<% Function ChkString(string) If string = "" then string = " " ChkString = Replace(string, """, """") End Function %>
  2. 규범성을 위해 메시지 텍스트의 어휘를 확인하는 기능. 단어가 유효하지 않은 단어 목록의 단어와 일치하면 별표로 바꿉니다.<% Function ChkBadWords(String2) strBadWords = objRec2("BadWords") bwords = split(strBadWords, "|") For i = 0 to ubound(bwords) String2 = Replace(String2, bwords(i), string(len(bwords(i)),"*"), 1,-1,1) Next ChkBadWords = String2 end function %>
  3. 사용자가 입력한 텍스트의 서식을 지정하는 기능입니다. 필요한 경우(데이터베이스에 해당 플래그가 있는 경우) 텍스트의 규범성이 확인(필터링)됩니다.<% Function FormatStr(String) on Error resume next String = Server.HTMLEncode(String) String2 = Replace(String, CHR(13), "") String2 = Replace(String, CHR(10) & CHR(10), "

    ") String2 = 바꾸기(문자열, CHR(10), "
    ") objRec2("BadOn") = True이면 String2 = ChkBadWords(String2) FormatStr = String2이면 End Function %>

  4. 필드 체크 기능:<% Function ValidateField(sFieldValue, sFieldType) Valid = True Select Case LCase(sFieldType) Case "name" If Len(sFieldValue) = 0 Then Valid = False Case "message" If Len(sFieldValue) = 0 Then Valid = False End Select ValidateField = Valid End Function %>
  5. 새 메시지를 추가하는 절차(메시지를 보낸 컴퓨터의 IP 주소가 계산되는 방식에 주의):
<% Sub Update strSql = "insert into Messages (Name, Country, Email, URL,IP,Message,Rating) values ("" strSql = StrSql & ChkString(Request.Form("name")) & "", "" strSql = StrSql & ChkString(Request.Form("Country")) & "", "" strSql = StrSql & ChkString(Request.Form("email")) & "", "" strSql = StrSql & ChkString(Request.Form("URL")) & "", "" strSql = StrSql & Request.ServerVariables("REMOTE_ADDR") & "", "" strSql = StrSql & ChkString(Request.Form("Message")) & "", "" strSql = StrSql & ChkString(Request.Form("Rating")) & "")" objConn.Execute (StrSql) %>

그런 다음 해당 테이블에서 색상, 크기, 디자인 글꼴의 매개변수를 추출하여 적용합니다.

"색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("FormTitleSize")%>">방명록에 등록해 주셔서 감사합니다!

"색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>"> 항목을 보려면 여기를 클릭하십시오

이제 필요한 경우 새 방명록 게시물을 알리는 이메일을 관리자 또는 관리자에게 보내십시오.

<% If Not(Request.Form("email"))="" AND objRec2("AutoEmail")=True then Name = Request.Form("name") Email = Request.Form("email") sFrom = objRec2("YourEmail") sTo=Email sSubject = "Спасибо, Ваша запись в нашей гостевой книге принята!" sMessage = "Дорогой(ая) " & Name & vbcrlf _ & vbcrlf _ & objRec2("ThankMessage") & vbcrlf _ & vbcrlf _ & vbcrlf Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.Send sFrom, sTo, sSubject, sMessage Set objNewMail = Nothing End If If objRec2("YouEmail")=True then Name = Request.Form("name") Home_Page = Request.Form("url") Email = Request.Form("email") Message = Request.Form("message") Country = Request.Form("Country") Address = Request.ServerVariables("REMOTE_ADDR") Rating = Request.Form("Rating") If Rating ="0" then Rating="No Rating" End If sFrom = objRec2("YourEmail") sTo= objRec2("YourEmail") sSubject = "Новое сообщение" sMessage = "Привет," & vbcrlf _ & "Новое сообщение поступило в гостевую книгу" & vbcrlf _ & vbcrlf _ & ":" & vbcrlf _ & vbcrlf _ & Message & vbcrlf _ & vbcrlf _ & "Детали сообщения:" & vbcrlf _ & "Ваше имя: " & Name & vbcrlf _ & "Email: " & Email & vbcrlf _ & "URL: " & Home_Page & vbcrlf _ & "Страна: " & Country & vbcrlf _ & "Рейтинг: " & Rating & vbcrlf _ & "Адрес: " & Address Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.Send sFrom, sTo, sSubject, sMessage Set objNewMail = Nothing End If End Sub %>

새 값 입력 양식

또한 새 메시지를 추가하는 데 사용되는 양식의 표시 절차에 참여하는 것이 좋습니다(양식 자체가 닫혀 있습니다.

<% Sub ShowForm(Sign) %>

>
"색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("FormTitleSize")%>"> 방명록에 항목을 남겨주세요

">* 기억해야 하는 필드를 나타냅니다.

콜스팬=2> "색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>"> 당신의 이름: *
"크기=30> <% If dictFields(LCase("name")) Then Response.Write "이름을 입력해야 합니다.
" 다른 응답.쓰기 "
" %>인 경우 종료
콜스팬=2> "색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>"> 이메일:
"크기=30>
콜스팬=2> "색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>"> URL:
"색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>"> http:// "크기=30>
콜스팬=2> "색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>"> 이 나라:
"크기=30>
"색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>"> 저희 웹사이트를 어떻게 평가하십니까?
"색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%> ">귀하의 의견: *
"색상="빨간색" 크기="-2"><% If dictFields(LCase("message")) Then Response.Write "Вы не ввели сообщение
" 다른 응답.쓰기 "
" %>인 경우 종료
<% End Sub %>

그 다음에는 고정된 수의 사용자 메시지(관리 설정 테이블에서 검색된 값)를 표시하는 기본 기능이 나옵니다.

<% Sub Show NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If Set objRec = Server.CreateObject ("ADODB.Recordset") StrSql = "SELECT * FROM Messages ORDER BY ID DESC;" objRec.PageSize = NumPerPage objRec.CacheSize = NumPerPage objRec.Open StrSql,objConn,3,1,&H0001 iPages = objRec.PageCount TotalRows = objRec.RecordCount If iPageCurrent >iPages 다음 iPageCurrent = iPages If iPageCurrent< 1 Then iPageCurrent = 1 If iPages = 0 Then Response.Write "Не найденно записей!" Else ObjRec.AbsolutePage = iPageCurrent %>

"색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>"> 책의 합계 <%=TotalRows%>항목 <%=iPages%>페이지

<% iRecordsShown = 0 Do While iRecordsShown < NumPerPage And Not objRec.EOF Rating = ObjRec("Rating") If IsNull(Rating) or Rating="0" then Rating = "nr" Else Rating = ObjRec("Rating") End If If IsNull(ObjRec("URL")) then Link = "Не указан URL" Else Link = "http://" & ObjRec("URL") & "" End If Email = FormatStr(ObjRec("Email")) Name = FormatStr(ObjRec("Name")) %>
"> "색상="<%=objRec2("InfoFontColor")%>"크기="<%=objRec2("InfoFontSize")%>"><%=ObjRec("DateID") %> "> "색상="<%=objRec2("InfoFontColor")%>"크기="<%=objRec2("InfoFontSize")%>">사이트 등급: .gif" 높이="14" 너비="65">
"> "색상="<%=objRec2("MessageFontColor")%>"크기="<%=objRec2("MessageFontSize")%>"><%=FormatStr(ObjRec("Message"))%>
"> "색상="<%=objRec2("InfoFontColor")%>"크기="<%=objRec2("InfoFontSize")%>"> <% If IsEmpty(Email) or Email=" " then Response.Write Name Else Response.Write "" & 이름 끝인 경우 %> "> "색상="<%=objRec2("InfoFontColor")%>"크기="<%=objRec2("InfoFontSize")%>"><%=FormatStr(ObjRec("Country")) %> IP:<%= ObjRec("IP") %> "> "색상="<%=objRec2("InfoFontColor")%>"크기="<%=objRec2("InfoFontSize")%>"> <%=Link%>

<% iRecordsShown = iRecordsShown + 1 objRec.MoveNext Loop if iPages >1 다음 %>

"색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>"> 페이지: <% For I = 1 To iPages If I = iPageCurrent Then Response.Write ""&나&"" 다른 응답.쓰기 " "&나&""다음 응답이면 종료.쓰기"" Else Response.Write " " End If End If objRec.Close Set objRec = Nothing End Sub %>

메시지의 "일부"가 있는 다음 페이지를 볼 수 있는 링크가 어떻게 형성되고 구현되는지 주목하십시오.

응답.쓰기" "&나&" "

보시다시피 페이지 번호는 페이지 매개변수의 값으로 전달되며 이후 이 값이 1이 아니면 메시지 표시가 첫 번째 메시지에서 시작되지 않고 다음 메시지부터 시작됩니다. 매개변수에 지정된 해당 번호가 있는 페이지의 계정에서 첫 번째여야 합니다.

<% NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If %>모듈 자체의 소스 텍스트는 데이터베이스에 대한 연결이 이루어지고 관리자 관리 설정 테이블에서 레코드가 검색되는(설명된 예에서는 유일한 레코드임) 다음과 같습니다.<% Set objConn = Server.CreateObject ("ADODB.Connection") objConn.Open StrConn Set objRec2 = Server.CreateObject ("ADODB.Recordset") ConfigSql = "SELECT * FROM Admin;" objRec2.Open ConfigSql,objConn,0,1,&H0001 %>

그런 다음 HTML 페이지의 제목과 기본 태그에 스타일을 지정할 수 있습니다.

ASP on a silver plate part 15 - DIY 방명록

"색상="<%=objRec2("PageFontColor")%>"크기="<%=objRec2("PageFontSize")%>">

방명록 보기 | 방명록에 항목을 남겨주세요

그리고 마지막으로 모듈의 메인 및 유일한 asp 페이지를 처리하기 위한 메인 루프는 다음과 같습니다.

<% select case Request.QueryString("mode") case "post" Dim Field Dim dictFields Set dictFields = Server.CreateObject("Scripting.Dictionary") For Each Field in Request.Form If ValidateField(Request.Form(Field), Field) = False Then dictFields.Add LCase(Field), True End If Next If Request.Form.Count <>0 및 dictFields.Count = 0 그런 다음 Request.Form.Count인 경우 Update Else를 호출합니다.<>0 then End If ShowForm("Sign") End If case "show" 호출 케이스 표시 Else 호출 표시 End 선택 %>

여기에서는 웹 애플리케이션의 두 가지 기능에 해당하는 두 가지 경우만 고려합니다. 방명록에 새 항목 추가(mode 매개변수 값 = "post") 및 방명록 메시지 보기(mode 매개변수 값 = "show") ).

<% objRec2.Close Set objRec2 = Nothing s objConn.Close Set objConn = Nothing Response.Write "

" %>

결론

우리는 사이트의 기능적 구성 요소를 하나 더 고려하고 즉시 이식 가능하게 만들었습니다. 그 결과 인식의 측면에서 다소 복잡한 소스 코드가 되었습니다. 관리 테이블에서 검색된 많은 매개변수로 인해 모듈의 소스 코드를 이해하기가 다소 어려워졌지만 한 번만 사용하면 변경될 때 코드를 편집하지 않아도 됩니다. 우리가 개발한 시스템은 사용하기에 상당히 적합하며 구현의 모듈성과 기사에 설명된 기존 사이트에서의 구현 접근 방식 덕분에 거의 모든 복잡성 수준의 사이트에서 방명록으로 사용할 수 있습니다. .

물론 관리 설정(구성표)을 편집, 추가 및 삭제하기 위한 웹 인터페이스도 고려해야 하지만 이는 시간이 많이 걸리므로 작성자는 이 기사의 다음 부분 중 하나에서 이를 다루려고 합니다.

ComputerPress 11 "2001

Google 검색 엔진(www.google.com)은 다양한 검색 옵션을 제공합니다. 이 모든 기능은 인터넷을 처음 사용하는 사용자에게 매우 유용한 검색 도구이며 동시에 해커뿐만 아니라 컴퓨터 이외의 범죄자를 포함하여 사악한 의도를 가진 사람들의 손에 훨씬 더 강력한 침입 및 파괴 무기입니다. 그리고 심지어 테러리스트까지.
(1주 동안 조회수 9475회)

데니스 바트란코프
denisNOSPAMixi.ru

주목:이 기사는 행동 지침이 아닙니다. 이 글은 웹 서버 관리자인 당신을 위해 작성되었습니다. 그래서 당신이 안전하다는 잘못된 느낌을 없애고 마침내 이 정보 획득 방법의 교활함을 이해하고 사이트를 보호하기 위한 설정을 하게 될 것입니다.

소개

예를 들어, 0.14초 만에 1670페이지를 찾았습니다!

2. 예를 들어 다른 줄을 입력해 보겠습니다.

inurl:"auth_user_file.txt"

조금 덜하지만 이것은 이미 무료 다운로드와 비밀번호 추측(동일한 John The Ripper 사용)에 충분합니다. 아래에서 몇 가지 예를 더 들겠습니다.

따라서 Google 검색 엔진이 대부분의 인터넷 사이트를 방문하여 여기에 포함된 정보를 캐시했다는 사실을 알아야 합니다. 이 캐시된 정보를 사용하면 사이트에 직접 연결하지 않고도 Google에서 내부적으로 저장한 정보를 파헤치기만 하면 사이트 및 사이트 콘텐츠에 대한 정보를 얻을 수 있습니다. 또한 사이트의 정보를 더 이상 사용할 수 없는 경우 캐시의 정보가 계속 보존될 수 있습니다. 이 방법에 필요한 것은 일부 Google 키워드를 아는 것입니다. 이 기술을 Google 해킹이라고 합니다.

Google Hacking에 대한 정보는 3년 전 Bugtruck 메일링 리스트에 처음으로 나타났습니다. 2001년에 이 주제는 프랑스 학생에 의해 제기되었습니다. 다음은 이 편지에 대한 링크입니다. http://www.cotse.com/mailing-lists/bugtraq/2001/Nov/0129.html . 그러한 요청의 첫 번째 예를 제공합니다.

1) /admin의 색인
2) /password의 색인
3) /mail 색인
4) Index of / +banques +filetype:xls (for France...)
5) / +passwd의 인덱스
6) /password.txt의 색인

이 주제는 2004년 5월 7일 Johnny Long의 기사가 출판된 후 꽤 최근에 인터넷의 영어 읽기 부분에서 많은 소음을 일으켰습니다. Google Hacking에 대한 보다 완전한 연구를 위해 이 저자의 사이트 http://johnny.ihackstuff.com으로 이동하는 것이 좋습니다. 이 기사에서는 최신 정보를 알려드리고자 합니다.

누가 사용할 수 있습니까?
- 언론인, 스파이 및 다른 사람의 일에 코를 박고 싶어하는 모든 사람들은 이 기능을 사용하여 타협적인 증거를 찾을 수 있습니다.
- 해킹에 적합한 표적을 찾는 해커.

Google이 작동하는 방식.

대화를 계속하기 위해 Google 검색어에 사용된 몇 가지 키워드를 상기시켜 드리겠습니다.

+ 기호를 사용하여 검색

Google은 중요하지 않은 단어를 검색에서 제외합니다. 예를 들어 영어로 된 의문사, 전치사 및 관사: 예를 들어 are, of, where. 러시아어에서 Google은 모든 단어를 중요하게 생각하는 것 같습니다. 단어가 검색에서 제외되면 Google에서 이에 대해 씁니다. Google에서 이러한 단어가 포함된 페이지 검색을 시작하려면 단어 앞에 공백 없이 + 기호를 추가해야 합니다. 예를 들어:

베이스의 에이스 +

기호로 검색 -

Google이 특정 주제가 포함된 페이지를 제외해야 하는 많은 페이지를 찾은 경우 Google에서 특정 단어가 포함되지 않은 페이지만 검색하도록 할 수 있습니다. 이렇게 하려면 각 단어 앞에 공백 없이 기호를 넣어 이러한 단어를 표시해야 합니다. 예를 들어:

낚시 - 보드카

~ 기호로 검색

지정된 단어뿐만 아니라 동의어도 조회할 수 있습니다. 이렇게 하려면 단어 앞에 ~ 기호를 붙입니다.

큰따옴표를 사용하여 정확한 구문 찾기

Google은 쿼리 문자열에 작성한 단어의 모든 발생에 대해 각 페이지에서 검색하며 단어의 상대 위치는 신경 쓰지 않습니다. 가장 중요한 것은 지정된 모든 단어가 동시에 페이지에 있다는 것입니다( 이것은 기본 동작입니다). 정확한 구문을 찾으려면 인용 부호로 묶어야 합니다. 예를 들어:

"북엔드"

지정된 단어 중 하나 이상을 가지려면 논리 연산을 명시적으로 지정해야 합니다. OR. 예를 들어:

책 안전 또는 보호

또한 검색 문자열에 * 기호를 사용하여 단어 및를 나타낼 수 있습니다. 어떤 문자를 나타내기 위해.

추가 연산자로 단어 찾기

검색 문자열에 다음 형식으로 지정된 검색 연산자가 있습니다.

연산자:search_term

콜론 옆의 공백은 필요하지 않습니다. 콜론 뒤에 공백을 삽입하면 오류 메시지가 표시되고 그 앞에 Google은 이를 일반 검색 문자열로 사용합니다.
추가 검색 연산자 그룹이 있습니다. 언어 - 결과를 보려는 언어 표시, 날짜 - 지난 3, 6 또는 12개월 동안의 결과 제한, 발생 - 문서에서 찾아야 하는 위치 표시 문자열: 모든 곳, 제목, URL, 도메인 - 지정된 사이트를 검색하거나 그 반대의 경우도 마찬가지입니다. 검색에서 제외, 안전 검색 - 지정된 유형의 정보가 포함된 사이트를 차단하고 검색 결과 페이지에서 제거합니다.
그러나 일부 연산자에는 추가 매개변수가 필요하지 않습니다(예: " 캐시:www.google.com"는 전체 검색 문자열로 호출될 수 있으며, 반대로 일부 키워드에는 검색어가 필요합니다. 예를 들면 " 사이트:www.google.com 도움말". 주제에 비추어 다음 연산자를 살펴보겠습니다.

운영자

설명

추가 매개변수가 필요합니까?

search_term에 지정된 사이트만 검색

search_term 유형의 문서에서만 검색

제목에 search_term이 포함된 페이지 찾기

제목에 search_term이라는 단어가 모두 포함된 페이지 찾기

주소에 search_term이라는 단어가 포함된 페이지 찾기

주소에 search_term이라는 단어가 모두 포함된 페이지 찾기

운영자 대지:지정된 사이트에서만 검색을 제한하며, 도메인 이름뿐만 아니라 IP 주소도 지정할 수 있습니다. 예를 들어 다음을 입력합니다.

운영자 파일 형식:특정 유형의 파일로 검색을 제한합니다. 예를 들어:

이 문서의 날짜를 기준으로 Google은 13가지 다른 파일 형식 내에서 검색할 수 있습니다.

  • Adobe 휴대용 문서 형식(pdf)
  • 어도비 포스트스크립트(ps)
  • 로터스 1-2-3(wk1, wk2, wk3, wk4, wk5, wki, wks, wku)
  • 로터스 워드 프로(lwp)
  • 맥라이트(mw)
  • 마이크로소프트 엑셀(xls)
  • 마이크로소프트 파워포인트(ppt)
  • 마이크로소프트 워드(문서)
  • 마이크로소프트 웍스(wks, wps, wdb)
  • 마이크로소프트 쓰기(wri)
  • 서식 있는 텍스트 형식(rtf)
  • 충격파 플래시(swf)
  • 텍스트(Ans, txt)

운영자 링크:지정된 페이지를 가리키는 모든 페이지를 표시합니다.
인터넷의 얼마나 많은 곳이 당신에 대해 알고 있는지 보는 것은 항상 흥미로울 것입니다. 우리는 시도:

운영자 은닉처: Google이 페이지를 마지막으로 방문했을 때의 모습으로 사이트의 Google 캐시 버전을 보여줍니다. 자주 변경되는 사이트를 살펴보고 다음을 확인합니다.

운영자 제목:페이지 제목에서 지정된 단어를 검색합니다. 운영자 제목:확장 기능입니다. 페이지 제목에서 지정된 몇 개의 단어를 모두 찾습니다. 비교하다:

제목: 화성으로 비행
intitle:flight intitle:on intitle:mars
allintitle:화성으로 비행

운영자 inurl: Google이 URL에 지정된 문자열을 포함하는 모든 페이지를 표시하도록 합니다. allinurl: URL의 모든 단어를 검색합니다. 예를 들어:

allinurl:acid_stat_alerts.php

이 명령은 SNORT가 없는 사람들에게 특히 유용합니다. 최소한 실제 시스템에서 어떻게 작동하는지 볼 수는 있습니다.

구글 해킹 방법

그래서 위의 연산자와 키워드를 조합하면 누구나 필요한 정보를 수집하고 취약점을 검색할 수 있음을 알게 되었습니다. 이러한 기술을 종종 Google 해킹이라고 합니다.

사이트의 지도

site: 문을 사용하여 Google이 사이트에서 찾은 모든 링크를 볼 수 있습니다. 일반적으로 스크립트에 의해 동적으로 생성되는 페이지는 매개변수를 사용하여 인덱싱되지 않으므로 일부 사이트에서는 ISAPI 필터를 사용하여 링크가 다음 형식으로 표시되지 않도록 합니다. /article.asp?num=10&dst=5, 그러나 슬래시 포함 /article/abc/num/10/dst/5. 이는 사이트가 일반적으로 검색 엔진에 의해 인덱싱되도록 하기 위해 수행됩니다.

해보자:

사이트:www.whitehouse.gov 백악관

Google은 사이트의 모든 페이지에 whitehouse라는 단어가 포함되어 있다고 생각합니다. 이것은 우리가 모든 페이지를 얻는 데 사용하는 것입니다.
단순화된 버전도 있습니다.

사이트:whitehouse.gov

그리고 가장 중요한 부분은 whitehouse.gov의 동지들이 우리가 그들의 사이트 구조를 살펴보고 Google이 자체적으로 다운로드한 캐시된 페이지도 살펴봤다는 사실조차 몰랐다는 것입니다. 이것은 사이트의 구조를 연구하고 당분간 주목받지 않고 콘텐츠를 보는 데 사용할 수 있습니다.

디렉토리의 파일 나열

웹 서버는 일반 HTML 페이지 대신 서버 디렉토리 목록을 표시할 수 있습니다. 이것은 일반적으로 사용자가 특정 파일을 선택하고 다운로드하도록 하기 위해 수행됩니다. 그러나 많은 경우 관리자는 디렉토리의 내용을 표시할 의도가 없습니다. 이는 서버 구성이 잘못되었거나 디렉토리에 마스터 페이지가 없기 때문입니다. 결과적으로 해커는 디렉토리에서 흥미로운 것을 찾아 자신의 목적을 위해 사용할 수 있습니다. 이러한 모든 페이지를 찾으려면 제목에 index of라는 단어가 모두 포함되어 있음을 확인하는 것으로 충분합니다. 그러나 단어 색인에는 이러한 페이지만 포함되어 있지 않기 때문에 쿼리를 구체화하고 페이지 자체의 키워드를 고려해야 하므로 다음과 같은 쿼리가 필요합니다.

intitle:index.of 상위 디렉토리
intitle:index.of 이름 크기

대부분의 디렉토리 목록은 의도적이기 때문에 처음에는 잘못된 목록을 찾는 데 어려움을 겪을 수 있습니다. 그러나 최소한 아래에 설명된 대로 목록을 사용하여 WEB 서버 버전을 결정할 수 있습니다.

웹 서버 버전을 가져오는 중입니다.

웹 서버 버전을 아는 것은 해커 공격을 시작하기 전에 항상 도움이 됩니다. 다시 한 번 Google 덕분에 서버에 연결하지 않고도 이 정보를 얻을 수 있습니다. 디렉토리 목록을 자세히 보면 WEB 서버의 이름과 버전이 거기에 표시되는 것을 볼 수 있습니다.

Apache1.3.29 - trf296.free.fr 포트 80의 ProXad 서버

숙련된 관리자가 이 정보를 변경할 수 있지만 일반적으로 사실입니다. 따라서 이 정보를 얻으려면 요청을 보내는 것으로 충분합니다.

intitle:index.of server.at

특정 서버에 대한 정보를 얻기 위해 요청을 세분화합니다.

intitle:index.of server.at 사이트:ibm.com

또는 그 반대의 경우에도 특정 버전의 서버에서 실행되는 서버를 찾고 있습니다.

intitle:index.of Apache/2.0.40 서버

이 기술은 해커가 피해자를 찾는 데 사용할 수 있습니다. 예를 들어, 특정 버전의 WEB 서버에 대한 익스플로잇이 있는 경우 이를 찾아 기존 익스플로잇을 시도할 수 있습니다.

WEB 서버의 새 버전을 설치할 때 기본적으로 설치되는 페이지를 보고 서버 버전을 얻을 수도 있습니다. 예를 들어 Apache 1.2.6 테스트 페이지를 보려면 다음을 입력하십시오.

제목:Test.Page.for.Apache it.worked!

또한 일부 운영 체제는 설치 중에 WEB 서버를 즉시 설치하고 실행합니다. 그러나 일부 사용자는 이 사실조차 모르고 있습니다. 당연히 누군가가 기본 페이지를 삭제하지 않은 것을 보면 컴퓨터가 구성에 전혀 영향을 받지 않았으며 공격에 취약할 수 있다고 가정하는 것이 논리적입니다.

IIS 5.0 페이지를 찾아보십시오.

allintitle:Windows 2000 인터넷 서비스에 오신 것을 환영합니다.

IIS의 경우 서버 버전뿐만 아니라 Windows 버전 및 서비스 팩 버전도 확인할 수 있습니다.

WEB 서버의 버전을 확인하는 또 다른 방법은 기본적으로 사이트에 설치할 수 있는 매뉴얼(도움말 페이지)과 예제를 찾는 것입니다. 해커는 이러한 구성 요소를 사용하여 사이트에 대한 권한 있는 액세스 권한을 얻는 몇 가지 방법을 찾았습니다. 그렇기 때문에 프로덕션 사이트에서 이러한 구성 요소를 제거해야 합니다. 이러한 구성 요소가 있으면 서버 유형 및 해당 버전에 대한 정보를 얻을 수 있다는 사실은 말할 것도 없습니다. 예를 들어 아파치 매뉴얼을 찾아보자:

inurl:수동 아파치 지시문 모듈

Google을 CGI 스캐너로 사용.

CGI 스캐너 또는 WEB 스캐너는 피해자의 서버에서 취약한 스크립트 및 프로그램을 검색하는 유틸리티입니다. 이러한 유틸리티는 무엇을 찾아야 하는지 알아야 합니다. 이를 위해 취약한 파일의 전체 목록이 있습니다. 예를 들면 다음과 같습니다.

/cgi-bin/cgiemail/uargg.txt
/random_banner/index.cgi
/random_banner/index.cgi
/cgi-bin/mailview.cgi
/cgi-bin/maillist.cgi
/cgi-bin/userreg.cgi

/iissamples/ISSamples/SQLQHit.asp
/SiteServer/admin/findvserver.asp
/스크립트/cphost.dll
/cgi-bin/finger.cgi

검색 창에 파일 이름과 함께 index of 또는 inurl이라는 단어를 사용하여 Google을 사용하여 이러한 각 파일을 찾을 수 있습니다. 예를 들어 다음과 같이 취약한 스크립트가 있는 사이트를 찾을 수 있습니다.

allinurl:/random_banner/index.cgi

추가 지식이 있으면 해커는 스크립트 취약점을 악용하고 이 취약점을 사용하여 스크립트가 서버에 저장된 모든 파일을 제공하도록 할 수 있습니다. 예를 들어 암호 파일.

Google을 통한 해킹으로부터 자신을 보호하는 방법.

1. WEB 서버에 중요한 데이터를 업로드하지 마십시오.

데이터를 임시로 게시한 경우에도 잊어버릴 수 있습니다. 그렇지 않으면 누군가가 이 데이터를 찾아서 삭제할 시간이 있습니다. 하지마 도난으로부터 데이터를 보호하기 위해 데이터를 전송하는 다른 방법이 많이 있습니다.

2. 사이트를 확인합니다.

설명된 방법을 사용하여 사이트를 조사하십시오. 사이트 http://johnny.ihackstuff.com에 나타나는 새로운 방법에 대해 주기적으로 사이트를 확인하십시오. 작업을 자동화하려면 Google에서 특별 허가를 받아야 합니다. 잘 읽어보면 http://www.google.com/terms_of_service.html, 그러면 다음과 같은 문구가 표시됩니다. Google의 명시적인 사전 허가 없이는 어떤 종류의 자동화된 쿼리도 Google 시스템에 보낼 수 없습니다.

3. 귀하의 사이트 또는 그 일부에 대한 색인을 생성하기 위해 Google이 필요하지 않을 수 있습니다.

Google을 사용하면 데이터베이스에서 사이트 또는 사이트의 일부에 대한 링크를 제거하고 캐시에서 페이지를 제거할 수 있습니다. 또한 사이트에서 이미지 검색을 금지하고 검색 결과에 페이지의 짧은 조각을 표시하는 것을 금지할 수 있습니다. 사이트 삭제에 대한 모든 옵션은 페이지에 설명되어 있습니다 http://www.google.com/remove.html. 이렇게 하려면 이 사이트의 실제 소유자인지 확인하거나 페이지에 태그를 삽입하거나

4. robots.txt 사용

검색 엔진은 사이트 루트의 robots.txt 파일을 살펴보고 단어로 표시된 부분은 색인하지 않는 것으로 알려져 있습니다. 허용하지 않음. 이를 사용하여 사이트의 일부가 인덱싱되는 것을 방지할 수 있습니다. 예를 들어 전체 사이트의 색인을 생성하지 않으려면 다음 두 줄을 포함하는 robots.txt 파일을 만드십시오.

사용자 에이전트: *
허용하지 않음: /

또 무슨 일이

인생이 꿀처럼 느껴지지 않도록 위의 방법을 사용하여 스크립트와 웹 서버에서 구멍을 찾는 사람들을 따라가는 사이트가 있음을 결국 말씀 드리겠습니다. 그러한 페이지의 예는

부록.

약간 달콤한. 다음 중 하나를 직접 시도해 보십시오.

1. #mysql dump filetype:sql - mySQL 데이터베이스 덤프 검색
2. 호스트 취약점 요약 보고서 - 다른 사람들이 발견한 취약점을 보여줍니다.
3. inurl:main.php에서 실행되는 phpMyAdmin - phpmyadmin 패널을 통해 컨트롤을 강제로 닫습니다.
4. 배포용이 아님
5. 요청 세부 정보 제어 트리 서버 변수
6. 자식 모드에서 실행
7. 이 보고서는 WebLog에서 생성되었습니다.
8. 제목:index.of cgiirc.config
9. filetype:conf inurl:firewall -intitle:cvs - 누군가 방화벽 설정 파일을 필요로 할 수도 있습니까? :)
10. 제목:index.of 재정.xls - 흠....
11. 제목:dbconvert.exe 채팅 ​​인덱스 - icq 채팅 로그
12. intext:Tobias Oetiker 트래픽 분석
13. intitle: Webalizer에서 생성한 사용 통계
14. intitle:고급 웹 통계 통계
15. intitle:index.of ws_ftp.ini - ws ftp 설정
16. inurl:ipsec.secrets는 공유 비밀을 보유합니다 - 비밀 키 - 좋은 찾기
17. inurl:main.php phpMyAdmin에 오신 것을 환영합니다
18. inurl:server-info 아파치 서버 정보
19. 사이트:edu 관리자 등급
20. ORA-00921: SQL 명령의 예기치 않은 종료 - 경로 가져오기
21. 제목: index.of trillian.ini
22. intitle:pwd.db의 인덱스
23. 제목:index.of people.lst
24. 제목: index.of master.passwd
25.inurl:passlist.txt
26. 제목: .mysql_history의 인덱스
27. intitle:intext의 인덱스:globals.inc
28. 제목:index.of 관리자.pwd
29. 제목:Index.of 등 ​​그림자
30. intitle:index.of secring.pgp
31. inurl:config.php dbuname dbpass
32. inurl:수행 파일 형식:ini

  • "해킹 MIT 구글"
  • 교육 센터 "Informzashchita" http://www.itsecurity.ru - 정보 보안 교육 분야의 선도적인 전문 센터(모스크바 교육 위원회 라이센스 번호 015470, 국가 인증 번호 004251). 러시아 및 CIS 국가에서 유일하게 공인된 인터넷 보안 시스템 및 Clearswift 교육 센터입니다. Microsoft 공인 교육 센터(보안 전문 분야). 교육 프로그램은 러시아 국가 기술 위원회(FSB, FAPSI)와 조정됩니다. 고급 교육에 대한 교육 증명서 및 상태 문서.

    SoftKey는 구매자, 개발자, 딜러 및 제휴 파트너를 위한 고유한 서비스입니다. 또한 이것은 러시아, 우크라이나, 카자흐스탄 최고의 온라인 소프트웨어 상점 중 하나로서 고객에게 다양한 지불 방법, 신속한(종종 즉시) 주문 처리, 개인 섹션에서 주문 이행 프로세스 추적, 다양한 할인을 제공합니다. 상점 및 제조 업체에서 ON.

    모든 ASP.NET 개발자는 페이지 지시문에 익숙해야 합니다. 당신이 초보자이고 페이지 지시문에 대해 배우고 싶다면 이 기사를 읽을 수 있습니다.

    첫 번째 질문은 페이지 지시문에 관한 것입니다.

    페이지 지시문이란 무엇입니까?

    기본적으로 페이지 지시문은 명령입니다. 이러한 명령은 페이지가 컴파일될 때 컴파일러에서 사용됩니다.

    ASP.NET 페이지에서 지시문을 사용하는 방법

    ASP.NET 페이지에 지시문을 추가하는 것은 어렵지 않습니다. ASP.NET 페이지에 지시문을 추가하는 것은 간단합니다. 다음 형식으로 지시문을 작성할 수 있습니다.

    <%@%>

    "로 시작하는 지시문 형식을 참조하십시오.<%@" and ends with "%>". 가장 좋은 방법은 지시어를 페이지 상단에 두는 것입니다. 하지만 지시어를 페이지의 아무 곳에나 둘 수 있습니다. 한 가지 더, 단일 지시문에 둘 이상의 속성을 넣을 수 있습니다.

    다음은 지시문의 전체 목록입니다.

    • @페이지
    • @주인
    • @제어
    • @수입
    • @구현
    • @등록하다
    • @집회
    • @마스터타입
    • @출력 캐시
    • @PreviousPageType
    • @참조

    각 지시문에 대해 논의해 보겠습니다.

    ASP.NET 페이지의 속성을 지정하려면 @Page 지시문을 사용해야 합니다. 아시다시피 ASP.NET 페이지는 ASP.NET에서 매우 중요한 부분이므로 이 지시문은 일반적으로 ASP.NET에서 사용됩니다.

    <%@Page Language="C#" AutoEventWIreup="false" CodeFile="Default.aspx.cs" Inherits="_Default"%>

    이제 @Page 지시문에 대한 정보가 있습니다. @Master 지시문은 @Page 지시문과 매우 유사합니다. 유일한 차이점은 @master 지시문이 마스터 페이지용이라는 것입니다. @Master 지시어를 사용하는 동안 템플릿 페이지의 속성을 정의한다는 점에 유의해야 합니다. 그러면 모든 콘텐츠 페이지가 마스터 페이지에 정의된 모든 속성을 상속할 수 있습니다. 그러나 일부 속성은 마스터 페이지에서만 사용할 수 있습니다.

    <%@Master Language="C#" AutoEventWIreup="false" CodeFile="MasterPage1.master.cs" Inherits="MasterPage"%>

    @제어

    @Control은 ASP.NET 사용자 컨트롤을 빌드합니다. 지시문을 사용할 때 사용자 컨트롤이 상속할 속성을 정의하고 이러한 값이 사용자 컨트롤에 할당됩니다.

    <%@Control Language="C#" Explicit="True" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

    아시다시피 C# 또는 VB 클래스를 사용하기 전에 .cs 클래스에서 네임스페이스를 정의해야 합니다. 따라서 @Import 지시문은 네임스페이스를 가져옵니다. 이 지시문은 단일 속성 "namespace"만 지원하며 이 속성은 가져올 네임스페이스를 지정하는 문자열 값을 사용합니다. 한 가지 주의해야 할 점은 @Import 지시문이 둘 이상의 속성/값 쌍을 포함할 수 없다는 것입니다. 그러나 여러 줄을 사용할 수 있습니다.

    <%@Import Namespace="System.Data"%>

    @구현

    @Implements 지시문은 .Net 프레임워크 인터페이스를 구현하기 위해 ASP.NET 페이지를 가져옵니다. 이 지시문은 단일 속성 인터페이스만 지원합니다.

    <%@Implements Interface="System.Web.UI.IValidator"%>

    @등록하다

    사용자 컨트롤을 만들고 해당 사용자 컨트롤을 페이지로 끌면 @Register 지시문이 표시됩니다. 이 지시문은 페이지에서 컨트롤에 액세스할 수 있도록 페이지에 사용자 컨트롤을 등록합니다.

    <%@ Register TagPrefix="MayTag Namespace="MyName.MyNameSpace" Assembly="MyAssembly"%>

    @집회

    @Assembly 지시문은 어셈블리를 페이지 또는 ASP.NET 사용자 컨트롤에 연결하므로 모든 어셈블리 클래스와 인터페이스를 클래스에서 사용할 수 있습니다. 이 지시문은 Name 및 src의 두 속성을 지원합니다. Name 특성은 어셈블리 이름을 정의하고 src 특성은 어셈블리의 소스를 정의합니다.

    <%@Assembly Name="MyAssembly"%>
    <%@Assembly src="MYAssembly.cs">

    @마스터타입

    @MasterType 지시문은 지정된 마스터 페이지에 포함된 강력한 형식의 참조 또는 멤버를 가져오기 위해 클래스 이름을 ASP.NET 페이지에 연결합니다. 이 지시문은 Typename과 virtualpath의 두 가지 속성을 지원합니다. Typename은 강력한 형식 또는 참조 멤버를 가져올 파생 클래스의 이름을 설정하고 virtualpath는 이러한 멤버가 검색되는 페이지의 위치를 ​​설정합니다.

    <%@MasterType VirtualPath="/MasterPage1.master"%>

    @출력 캐시

    ASP.NET 페이지의 출력 캐싱 정책을 제어합니다.

    <%@ OutputCache Duration ="180" VaryByParam="None"%>
    @이전 페이지 유형

    이 지시문은 페이지 간 게시가 시작되는 페이지를 지정합니다.

    @참조

    이 지시문은 활성 페이지 또는 컨트롤과 함께 다른 페이지 또는 사용자 정의 컨트롤이 따라야 함을 선언합니다. 이 지시문은 단일 속성 virtualpath를 지원합니다. 활성 페이지를 참조할 페이지 또는 사용자 정의 컨트롤의 위치를 ​​설정합니다.

    <%@Reference VirtualPayh="~/MyControl.ascx"%>

    마지막 단어

    여기에서 약간의 지식을 얻으시기 바랍니다. 이 기사가 마음에 드는지 댓글을 달아주세요. 당신의 의견은 나에게 매우 중요합니다. 왜냐하면 당신만이 내가 어디에서 잘못되고 있고 더 나은 기사를 작성하기 위해 어떤 개선이 필요한지 알려줄 것이기 때문입니다. 의견을 제시하고 피드백을 제공하십시오.

    AngularJS의 지시문은 중요한 역할을 합니다. 지시문은 HTML에 대한 새로운 트릭을 가르치는 데 사용할 수 있으며 고유한 HTML 태그나 속성을 만들 수도 있습니다. 지시문은 또한 마크업을 보다 유창하게 유지하는 데 도움이 되며 코드와 마크업을 서로 분리하는 좋은 방법을 정의합니다.

    보기는 HTML 템플릿입니다. 보기는 최종 사용자의 브라우저에 렌더링하려는 정보일 뿐입니다. AngularJS의 뷰는 다음이라고도 합니다. 컴파일된 DOM. View는 지시문을 사용하여 HTML 템플릿으로 데이터를 렌더링합니다.

    이 기사는 AngularJS 및 ASP.NET Web API로 구축된 프로젝트 추적 웹사이트의 파트 IV입니다. 지금까지 우리는 , , , 을(를) 만들었습니다.

    덕분에 이 Angular 시리즈를 검토하고 버그를 수정합니다.

    View에 Model을 제공하는 $scope 객체를 이미 보았다. 모델 코드는 뷰에 작성하는 HTML 코드와 혼합되지 않습니다. 대신 데이터 바인딩 식을 사용하여 데이터를 모델에서 보기로 이동합니다. 이러한 방식으로 개발자는 SoC(Separation of Interest)를 달성할 수 있습니다. 모델은 뷰와 독립적이므로 모든 뷰에 바인딩될 수 있습니다. 이 모델 바인딩은 AngularJS 지시문을 사용하여 수행됩니다.

    우리는 이미 AngularJS를 부트스트랩하는 ng-app과 컨트롤러를 HTML에서 사용할 수 있게 하는 ng-controller와 같은 Angular 지시문을 보았습니다. 컨트롤러에서 Angular((표현식))를 사용하여 데이터를 뷰에 바인딩할 수 있습니다.

    이 기사에서는 Angular와 함께 기본적으로 제공되는 몇 가지 추가 AngularJS 지시문을 살펴보겠습니다. 그 중 하나는 ng-반복. 이 기사와 함께 제공되는 EmployeeDetails.html 페이지에 ng-repeat 지시문을 사용해 보겠습니다. EmployeesController.js 파일에서 서비스 URL을 수정합니다. 서비스 URL은 다음과 같습니다.

    http://localhost:2464/api/ptemployes

    이제 다음 코드와 같이 EmployeeDetails.html 페이지를 수정합니다.

    ((직원 ID)) ((직원 이름)) ((대피 명칭)) ((직원 연락처 번호)) ((emp.eMailID)) ((emp.skillSets))

    교체 위의 코드가 있는 EmployeeDetails.html 페이지. 위 코드의 출력은 다음과 같습니다.

    이 코드에서는 AngularJS의 ng-repeat 지시문을 사용했습니다. .NET의 for 또는 foreach 루프와 유사합니다. 여기서 우리는 IEnumerable을 얻고 있습니다. ASP.NET Web API를 사용한 컬렉션. 이 컬렉션을 Angular Controller의 모델로 사용하고 있습니다. 이 모델을 사용하여 직원의 개체를 우리의 보기로 반복하고 있습니다. 이것은 뷰에 데이터를 표시하기 위해 컬렉션의 객체를 반복하는 매우 유용한 지시문입니다.

    이제 컬렉션에서 특정 직원을 검색하고 지정된 직원 이름 또는 직원 이름 문자를 기반으로 직원을 표시하는 필터를 추가해 보겠습니다. 지금까지 우리는 모델을 가져와 뷰에서 사용했습니다. 그것은 또한 다른 방식으로 작동합니다. 뷰가 컨트롤러에 있는 모델과 다시 대화하도록 할 수 있습니다.

    직원 이름을 기반으로 검색 필터를 추가하기 위해 아래와 같이 HTML 입력 요소를 추가하여 EmployeeDetails.html 페이지를 수정합니다.

    검색할 직원 이름 또는 문자 입력 -

    바로 뒤에 위의 코드를 추가하십시오.

    꼬리표. 위의 코드에서는 ng-model 지시문을 사용하여 데이터를 모델로 다시 보낼 수 있습니다. 이 데이터를 기반으로 EmployeeName 속성을 사용하여 직원을 검색합니다. EmployeeName 속성이 다음 단계에서 수행할 모델에서 선언되었는지 확인합니다. 또한 우리가 사용하고 있습니다 ng-제출호출할 지시문 직원 검색우리 컨트롤러의 기능.

    이제 EmployeeName 속성을 기준으로 직원을 검색할 수 있도록 EmployeesController.js 파일을 수정해보자. 코드는 아래와 같습니다.

    (함수() ( var EmployeesController = function ($scope,$http) ( varEmployees = function (serviceResp) ( $scope.Employees = serviceResp.data; ); $scope.SearchEmployees = function (EmployeeName) ( $http.get ("http://localhost:2464/api/ptemployees/" + EmployeeName) .then(employees, errorDetails); ); var errorDetails = function(serviceResp) ( $scope.Error="뭔가 잘못되었습니다 ??"; ) ;$http.get("http://localhost:2464/api/ptemployees") .then(employees,errorDetails); $scope.Title = "(!LANG:직원 세부 정보 페이지"; $scope.EmployeeName = null; }; app.controller("EmployeesController", EmployeesController); }()); !}

    위의 코드에서 SearchEmployee() 메서드를 $scope 개체에 모델로 추가했습니다. 이 메서드는 직원 이름 또는 직원 이름의 문자를 기반으로 직원을 검색합니다. 우리는 또한 선언했다 직원 이름이 코드 끝에 있는 컨트롤러의 속성입니다. SearchEmployees 메서드는 Web API 메서드를 가져옵니다. 다음과 같이 GET 메서드를 수정했습니다.

    공개 HttpResponseMessage Get(문자열 이름) ( var 직원 = EmployeesRepository.SearchEmployeesByName(이름); HttpResponseMessage 응답 = Request.CreateResponse(HttpStatusCode.OK, 직원); 반환 응답; )

    직원 저장소 코드는 다음과 같습니다.

    공개 정적 목록 SearchEmployeesByName(문자열 employeeName) ( ProjectTrackingDBEntities dataContext = new ProjectTrackingDBEntities(); var 쿼리 = dataContext.Employees의 직원에서 가져옴 여기서 employee.EmployeeName.Contains(employeeName) 선택 직원, return query.ToList(); )

    이러한 모든 변경 후에 이제 EmployeeDetails.html 페이지를 실행하고 출력을 확인하십시오.

    위의 출력에서 ​​이름에 'J' 문자가 포함된 직원을 검색합니다.

    AngularJS 필터바인딩 식 또는 지시문의 동작을 확장합니다. 필터는 바인딩 표현식과 함께 사용되어 바인딩되는 데이터의 형식을 지정합니다. 지시문과 함께 사용될 때 지시문에 몇 가지 추가 작업을 추가합니다. 기본적으로 AngularJS는 표현식 값의 형식을 지정하고 값/데이터를 보기에 표시하는 데 사용할 수 있는 여러 필터를 제공합니다. 보기, 컨트롤러 및 서비스에서 필터를 사용할 수 있습니다. 보기에 필터를 사용하는 구문은 다음과 같습니다. (( 식 | 필터1 | 필터2 | ...)).

    이제 직원 이름을 사용하여 데이터를 정렬하는 필터를 시도합니다. 데이터를 정렬하기 위해 |를 사용하여 ng-repeat에 필터를 추가해 보겠습니다. 여기에 표시된 연산자:

    위의 코드에서 ng-repeat 지시문에 필터를 추가하고 있습니다. orderBy:'employeeName'은 직원 이름을 사용하여 데이터를 오름차순으로 정렬합니다. 여기에서 출력을 관찰할 수 있습니다.

    데이터를 내림차순으로 표시하려면 다음과 같이 필터를 변경할 수 있습니다.

    위의 코드에서 직원 이름을 내림차순으로 정렬하기 위해 (-) 빼기 기호를 사용했습니다. 마찬가지로 (+) 기호를 사용하여 오름차순으로 정렬할 수 있습니다.

    당신은 또한 사용할 수 있습니다 한계까지레코드 수를 제한하는 필터. 예를 들어 한 번에 5명의 직원을 표시하려고 한다고 가정해 보겠습니다. EmployeeDetails.html 페이지에 제한된 수의 레코드를 표시하려면 여기에 표시된 대로 ng-repeat 지시문을 수정하겠습니다.

    출력은 다음과 같습니다.

    이제 ProjectDetails.html 페이지를 실행하면 날짜가 시간과 함께 표시됩니다. 다음 코드와 같이 날짜 필터를 적용할 수 있습니다.

    ((proj.projectID)) ((프로젝트 이름)) ((proj.startDate|날짜:"짧은")) ((proj.endDate|날짜:"짧은")) ((proj.clientName))

    이 페이지의 출력은 다음과 같습니다.

    fulldate, longdate, mediumdate, shortdate 등과 같은 다양한 날짜 형식을 사용할 수 있습니다. 이제 EmployeeDetails.html 페이지를 열고 실행해 보겠습니다. 직원 이름에 Z가 포함된 직원을 표시하기 위해 'Z' 문자를 사용하고 있습니다.

    관찰하면 출력에 데이터가 없는 Employee 테이블 머리글이 표시됩니다. 필터가 결과를 생성하지 않을 때 ng-show 지시문을 사용하여 제목을 보이지 않게 할 수 있습니다. 아래 코드와 같이 테이블 태그에 ng-show 지시문을 적용하고 Z 문자로 애플리케이션을 실행해 보십시오. 이제 직원 모델이 null인 경우 테이블 열이 표시되지 않습니다. ng-show 속성은 직원 모델을 평가하므로 테이블을 표시하거나 숨깁니다.

    마찬가지로 AngularJS에서 사용할 수 있는 지시문이 많이 있습니다. 이 시리즈의 뒷부분에서 보게 될 Custom Directive를 디자인할 수도 있습니다. 우리 보기의 요구 사항에 따라 다양한 보기에서 검색을 적용합니다. 다음 기사에서는 다음을 살펴보겠습니다.



    문화

    온 가족을 위한 케 피어 캐서롤 요리법

    온 가족을 위한 케 피어 캐서롤 요리법

    케피어는 건강에 좋은 제품일 뿐만 아니라 모든 종류의 캐서롤을 위한 훌륭한 재료입니다. 그것과 함께 요리는 부드럽고 기름기가 많지 않으며 특히 맛있습니다. 캐서롤에 빠져 봅시다 ...
    칼로리 마멀레이드, 유용한 속성

    칼로리 마멀레이드, 유용한 속성

    마멀레이드의 칼로리 함량은 많은 영양사들 사이에서 논란의 여지가 있습니다. 일부는 체중 감량시 마멀레이드를 유용한 저칼로리 제품이라고 조언합니다. 남들은 반대...
    다양한 연어 타르타르 요리법

    다양한 연어 타르타르 요리법

    연어 타르타르 - 일반적인 요리 원리 프랑스 요리 타르타르는 여러 가지 잘게 썬 재료로 만든 전채 요리입니다. 타르타르의 모든 구성 요소는 소스로 맛을 냅니다.
    연어 타르타르 - 최고의 요리법

    연어 타르타르 - 최고의 요리법

    러시아인의 귀에 이상하고 특이한 타르타르라는 단어는 프랑스 소스와 잘게 잘린 제품으로 구성된 모든 요리를 나타냅니다. 그것은 고기, 야채, 심지어 과일이 될 수 있습니다 ....
    다양한 연어 타르타르 요리법

    다양한 연어 타르타르 요리법

    러시아인의 귀에 이상하고 특이한 타르타르라는 단어는 프랑스 소스와 잘게 잘린 제품으로 구성된 모든 요리를 나타냅니다. 그것은 고기, 야채, 심지어 과일이 될 수 있습니다 ....
    쇠고기 두뇌 : 이점과 해로움, 요리법

    쇠고기 두뇌 : 이점과 해로움, 요리법

    용기당 인분: 2 칼로리: 중간 칼로리 1인분당: 360 kcal (345g) 물 소금, 후추...
    다른 마멀레이드의 칼로리 계산

    다른 마멀레이드의 칼로리 계산

    많은 사람들에게 마멀레이드는 어린 시절부터 가장 좋아하는 간식 중 하나입니다. 점성, 두껍고 종종 치아에 달라 붙고 달콤한 방울과 함께 입안에서 녹습니다 ... 즐겨 찾기 맛 목록에서 종종 남아 있지 않습니다 ...
    구덩이가있는 자체 주스의 천연 체리

    구덩이가있는 자체 주스의 천연 체리

    구덩이가있는 체리의 잼 잼의 경우 피부와 펄프의 강렬한 색상이 특징 인 어두운 색상의 과일이 적합합니다. 구덩이가 있는 잼은 아몬드 맛이 좋습니다. 과일...
    조리법: 집에서 만드는 Shawarma - 닭고기, 한국산 당근, 토마토, 그린 샐러드 포함

    조리법: 집에서 만드는 Shawarma - 닭고기, 한국산 당근, 토마토, 그린 샐러드 포함

    많은 사람들이 길거리에서 이 요리를 사는 데 익숙하지만 Shawarma는 집에서 쉽게 만들 수 있는 간단하고 맛있는 간식입니다. 피크닉이나 직장에 가지고 다니기 편리합니다. 대도시에서...
    양배추 수프를 요리하는 방법

    양배추 수프를 요리하는 방법

    Shchi는 소금에 절인 양배추로 만든 러시아 요리의 전통 요리로 "신 양배추 수프"라고도 불립니다. 꽤 자주 우크라이나 양배추와 양배추 수프가 혼동되지만 실제로 ...