나는 보았다 :
http://www...
ftp://blah.blah...
file://blah.blah...
unreal://blah.blah...
mailto://blah.blah...
첫 번째 섹션은 무엇입니까 http
?
내 자신을 등록 할 수 있습니까?
답변
가진 부는 HTTP://
, FTP://
등이 호출되어 URI 스킴
레지스트리를 통해 자신을 등록 할 수 있습니다.
HKEY_CLASSES_ROOT/
your-protocol-name/
(Default) "URL:your-protocol-name Protocol"
URL Protocol ""
shell/
open/
command/
(Default) PathToExecutable
출처 : https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml ,
http://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx
답변
메모장을 열고 아래 코드를 붙여 넣으십시오. “YourApp”을 앱 이름으로 변경하십시오. YourApp.reg에 저장하고 탐색기에서 클릭하여 실행하십시오. 그게 다야! 건배! 어윈 한트 제스
REGEDIT4
[HKEY_CLASSES_ROOT\YourApp]
@="URL:YourApp Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\YourApp\DefaultIcon]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\""
[HKEY_CLASSES_ROOT\YourApp\shell]
[HKEY_CLASSES_ROOT\YourApp\shell\open]
[HKEY_CLASSES_ROOT\YourApp\shell\open\command]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\" \"%1\" \"%2\" \"%3\" \"%4\" \"%5\" \"%6\" \"%7\" \"%8\" \"%9\""
답변
이것은 브라우저마다 다르며 IE와 Windows에서는 플러그 가능한 프로토콜 핸들러라고하는 것을 작성해야합니다.
기본 단계는 다음과 같습니다.
- IInternetProtocol 인터페이스를 구현하십시오.
- IInternetProtocolRoot 인터페이스를 구현하십시오.
- IClassFactory 인터페이스를 구현하십시오.
- 선택 과목. IInternetProtocolInfo 인터페이스를 구현하십시오. HTTP 프로토콜에 대한 지원은 트랜잭션 핸들러에서 제공합니다.
- IInternetProtocolInfo가 구현 된 경우 URL 보안 영역 관리자가 보안을 올바르게 처리 할 수 있도록 PARSE_SECURITY_URL 및 PARSE_SECURITY_DOMAIN에 대한 지원을 제공하십시오. 프로토콜 핸들러의 코드를 작성하십시오.
- BINDF_NO_UI 및 BINDF_SILENTOPERATION을 지원하십시오.
- HKEY_CLASSES_ROOT \ PROTOCOLS \ Handler의 레지스트리에서 프로토콜 핸들러의 하위 키를 추가하십시오.
- 서브 키 아래에 문자열 값 CLSID를 작성하고 문자열을 프로토콜 핸들러의 CLSID로 설정하십시오.
창쪽에 대한 자세한 내용은 MSDN의 비동기 플러그 가능 프로토콜 정보를 참조하십시오 . Windows SDK에도 샘플이 있습니다.
빠른 구글도 codeproject http://www.codeproject.com/KB/IP/DataProtocol.aspx 에서이 기사를 보여주었습니다 .
마지막으로 보안 담당자로서이 코드를 전투 강화해야한다고 지적해야합니다. 관리 코드에서는 신뢰할 수 없으며 C ++에서는해야하므로 (VB6을 사용할 수 있다고 가정) 위험이 높습니다. 실제로이를 수행해야하는지 여부를 고려해야하며, 필요한 경우 신중하게 설계하고 안전하게 코딩하십시오. 공격자는 페이지에 링크를 포함시켜 사용자에게 전달되는 콘텐츠를 쉽게 제어 할 수 있습니다. 예를 들어 간단한 버퍼 오버플로가 있다면 아무도 이것을 더 잘 수행하지 못합니다.<a href="custom:foooo{insert long string for buffer overflow here}"> Click me for free porn</a>
VC8 이상 컴파일러에 포함 된 strsafe 및 새로운 보안 CRT 메소드 사용을 강력하게 고려하십시오. 내가 무슨 말을하는지 모른다면 http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx를 참조하십시오 .
답변
등록 된 URI 스킴 목록입니다 . 각각에는 RFC (문서를 정의하는 문서)가 있으며 거의 표준입니다. RFC는 새로운 응용 프로그램 개발자 (브라우저, ftp 클라이언트 등)에게 지원해야 할 사항을 알려줍니다. 새로운 기본 수준 프로토콜이 필요한 경우 등록되지 않은 프로토콜을 사용할 수 있습니다. 다른 답변은 방법을 알려줍니다. 기존 프로토콜을 사용하여 많은 작업을 수행 할 수 있으므로 기존 구현을 얻을 수 있습니다.
답변
대부분의 Microsoft 제품 (Internet Explorer, Office, “파일 열기”대화 상자 등)의 경우 적절한 접두사가있는 URI를 열 때 실행할 응용 프로그램 을 등록 할 수 있습니다 . 이것은 더 일반적인 설명 의 일부입니다 -자신의 프로토콜을 구현하는 방법.
답변
이것을 프로토콜이라고합니다. 자신의 프로토콜을 만들지 못하게하는 유일한 방법은 다음과 같습니다.
- URL 형식과 실제 데이터 형식으로 해당 프로토콜을 이해하는 브라우저 또는 사용자 에이전트를 작성하십시오.
- 해당 프로토콜을 이해하는 서버 작성
- 브라우저와 서버가 계속 함께 작동 할 수 있도록 프로토콜 사양을 지정하는 것이 좋습니다.
Windows는 # 1을 매우 쉽게 만들어줍니다. 많은 경우에 이것이 실제로 필요한 전부입니다. 즉:
답변
첫 번째 섹션을 프로토콜이라고하며, 직접 등록 할 수 있습니다. Windows에서 (C # 태그-미안한 모노 팬이 주어 졌다고 가정하고있는 경우) 레지스트리를 통해 수행 됩니다 .