저는 델파이에서 ISAPI 확장을 작성하고 http 상태 비 저장 문제를 극복 할 방법을 찾고 있습니다. 이러한 작업에 세션을 사용하고 싶지만 ISAPI 모듈에서 세션을 시작할 수있는 방법을 찾을 수 없습니다. 세션은 매우 웹 서버에 따라 다르므로 각각에 대해 다른 방법이 있으며 서버 별 DLL을 통해 이러한 기능에 액세스 할 것으로 추측됩니다. 저는 현재 아파치에 관심이 있지만 IIS에 대한 정보는 대단히 감사하겠습니다.
PHP 소스 코드를 다운로드하여 session.c PHPAPI void php_session_start (void)의 코드가 많이 들어 있지 않지만 세션 코드을 검사했습니다.
ISAPI Delphi 웹 모듈에서 세션을 시작하고 세션 변수를 사용하려면 어떻게해야합니까?델파이로 작성된 ISAPI 모듈에서 세션을 사용하는 방법
답변
IIS를 통한 ISAPI 모듈에 대한 경험이 약간 있습니다. ISAPI 확장은 요청을받은 웹 서버와 데이터를 교환하기위한 프로토콜을 구현하는 DLL에 불과합니다.
IIS가 특정 URL에 대한 요청을 받고 해당 URL을 처리하기 위해 ISAPI 확장을 등록하면 IIS 작업자 프로세스로 해당 DLL이로드됩니다 (메모리에없는 경우). DLL은 작업자 프로세스가 유휴 상태가 아닌 것으로 간주하는 동안 메모리에 유지됩니다. DLL을 언로드 할시기를 제어 할 수 없으므로이를 염두에두고 솔루션을 디자인하십시오.
TWebModule
은 요청을 받고 전달할 때 발생하는 이벤트 형태로 많은 ISAPI 세부 사항을 추상화합니다. 그러나 세션 하부 구조가 존재하지 않으므로 혼자서해야합니다.
가장 좋은 방법은 제 생각에는 세션 쿠키를 사용하는 것입니다. 모두가하는 일입니다. 따라서 로그온 프로세스가 끝나면 현재 사용자를 유효한 사용자로 식별 할 수있는 문자열을 생성해야합니다. 물론이 문자열을 암호화하여 Base64로 변환해야하지만, 초기 테스트에서 쿠키를 사용자 이름으로 간단하게 채울 수 있습니다.
그래서, 로그온을 처리 한 후, 당신은 MY_APP_SESSION
, 예를 들어, add에라는 새 쿠키 (재산 TWebResponse.Cookies를) TWebModule
에서 Response 특성 (TWebResponse)를 사용합니다. 이 쿠키는 세션 데이터 (이 예에서는 사용자 이름)를 전달합니다.
그런 다음 로그온을 수행하는 데 사용 된 브라우저에서 비롯된 다른 요청 (Request
속성, 클래스 TWebRequest
으로 나타남)에서 해당 쿠키를 받기 시작하므로 모든 요청에서 다음과 같은 세션 데이터의 유효성을 검사해야합니다. 쿠키 (CookieFields
에 있음)가 만료 된 세션이나 가짜 세션을 발견하면 요청 처리를 거부합니다.
사용자가 로그 아웃하면 쿠키 만 제거하면됩니다.
사용자 (이름이 아닌 일종의 ID), 세션이 유효 할 때까지의 날짜 및 시간, 일부 보안 데이터 (때로는 일련의 청구). 이 모든 것을 암호화하고 Base64로 변환해야합니다. 쿠키에 몇 가지 보안 속성을 추가하여 쿠키를 읽을 수 있습니다. 또한 여기서 보안에는 정말로 신뢰할 수있는 HTTPS가 포함되어야합니다. 이것은 웹 애플리케이션의 보안을 강화하는 중요한 순간입니다!
그래서 각 요청에서 가장 먼저 보안을 위해 요청 된 URL을 확인하는 것입니다. URL에 세션이 필요하다고 판단되면 세션 쿠키를 확인하고 Base64를 되 돌리고 해독 한 다음 쿠키 내용을 평가하십시오.모든 것이 정상인 것 같으면 요청이 처리됩니다. 따라서 쿠키가 위장되는 것을 방지하는 것이 사기를 피하는 열쇠입니다.
여러분도 알다시피 좋은 델파이 코드를 작성하는 것이 전부입니다.
도움이 되었기를 바랍니다.
- 1. Delphi의 Datasnap ISAPI 모듈에서 CORS 문제
- 2. PHP에서 세션을 사용하는 방법?
- 3. android에서 세션을 사용하는 방법
- 4. 모듈에서 ls 명령을 사용하는 방법?
- 5. 커널 모듈에서 proc_pid_cmdline을 사용하는 방법
- 6. aar 모듈에서 함수를 사용하는 방법
- 7. 델파이로 MySQL 서버에 연결하는 방법
- 8. 아이폰 프로그래밍에서 세션을 사용하는 방법?
- 9. xslt에서 PHP 세션을 사용하는 방법?
- 10. GAE에서 django 세션을 사용하는 방법
- 11. null에서 HttpContext.Current와 세션을 사용하는 방법
- 12. WCF에서 ASP.NET 세션을 사용하는 방법?
- 13. 세션을 Asp.Net MVC3에서 사용하는 방법
- 14. database.php 파일에서 세션을 사용하는 방법
- 15. Isapi 모듈을 비활성화하는 방법
- 16. 젠드 프레임 워크로 작성된 모듈에서 drupal 사용자 역할을 확인하는 방법
- 17. IBM 워크 라이트 서버 측 로그인 모듈에서 세션을 유지하는 방법
- 18. IIS 6에서 여러 ISAPI 리디렉션 dll을 사용하는 방법 (각 사이트마다 isapi dll)
- 19. 컨테이너에서 사용하는 방법. 모듈에서 해결 하시겠습니까?
- 20. joomla 2.5 모듈에서 AJAX를 사용하는 방법?
- 21. mongodb 모듈에서 색인에 주석을 사용하는 방법
- 22. 여러 모듈에서 전역 배열을 사용하는 방법
- 23. vTiger - 다른 모듈에서 모듈 필드를 사용하는 방법
- 24. Kohana의 모듈에서 컨트롤러를 사용하는 방법 3.2
- 25. angular2 모듈에서 Soundcloud javascript sdk를 사용하는 방법
- 26. drupal 서비스 모듈에서 세션 인증을 사용하는 방법
- 27. NaCl 모듈에서 User32/GDI32/Kernel32를 사용하는 방법
- 28. Joomla 모듈에서 jQuery ajax를 사용하는 방법
- 29. GWT 다른 모듈에서 같은 서비스를 사용하는 방법
- 30. ISAPI 대 httphandler
"TWebModule"/ "TWebRequest"등을 사용하고 있습니까? 나는 이러한 구성 요소가 그 자체로 세션을 처리 할 정도로 정교하다고 믿지 않습니다. 너 자신을 관리해야 해. 일반적으로 데이터베이스에 저장된 쿠키를 통해. 이 기사를 보십시요 : http://delphi.about.com/library/bluc/text/uc060901a.htm –
나는 참으로. 어쩌면 쿠키와 세션 변수의 차이점을 분명히 이해하지 못할 수도 있습니다. 내 지식으로, 쿠키는 응용 프로그램에서 보내고 클라이언트 브라우저에 저장되는 이름/값 쌍 (다른 정보 중 하나)의 일종입니다. 그들은 덜 안전하고 사용자가이를 비활성화 할 수 있다는 단점이 있습니다. 다른 쪽 세션은 서버에 보관되어 텍스트 파일에서 데이터베이스로 "어딘가에"저장됩니다. 변수의 내용이 인터넷을 통해 여행 할 필요가 없기 때문에 세션이 더 좋아요. 보안 및 속도를 향상 시키십시오. – alvaroc
나는 당신이 제공 한 링크로 내 응용 프로그램을 시작했습니다. 그것은 상태없는 문제에 대한 몇 가지 방법을 언급하지만 세션에 대해서는 언급하지 않았다. – alvaroc