나는 nonce 생성과 PHP에 관해 여러 가지 질문을했지만 nonce의 "한 번"측면을 관리하는 것에 대한 논의는 발견하지 못했습니다.Apache/PHP에서 Nonce 관리하기
여기 내 상황입니다.
webservice에 액세스해야하는 일부 PHP가 있고 webservice에 요청하면 nonce를 생성하고 요청에 서명하기 위해 PHP가 필요합니다 (예 : webservice에서 nonce를 요청하지 않음). 그 부분은 쉽습니다.
여러 세션이 계속 될 수있는 경우 nonce 재사용을 방지하기위한 좋은 해결책으로 고심하고 있습니다.
내가보기에 내가 할 수있는 세 가지가 있습니다.
하나는 데이터베이스에 nonce/timestamp 쌍을 저장 한 다음 데이터베이스에서 기존의 nonce를 확인하고 오래된 것을 만료하는 등의 논리를 구현하는 것입니다. 스레드 안전을 위해 TRANSACTION
또는이 필요합니다. 왝.
둘째, nonces를 APC에 저장하고 (내 경우에는 memcached를 사용할 수 없음) TTL이 만료되도록하십시오. 이 경우 스레드 안전성은 로직을 sem_acquire()
/sem_release()
에 랩핑해야하며 그렇지 않으면 apc_add()
은 정말로 thread-safe입니까? 캐시가 꽉 찼기 때문에 apc_add()
또는 apc_store()
이 실제로 실패하면 상황을 처리하는 방법이 내 관심사입니다.
3 가지가 APC 대신 Cache_Lite를 사용하는 것입니다.
다른 옵션이 있습니까? 내가 말할 수있는 한, OpenID는 Non_Lace를 Cache_Lite로 관리하므로, 이것이 최선의 해결책이라고 생각하지만 커밋하기 전에 모든 옵션을 점검하고 싶다.
감사합니다.
감사합니다. 이 접근법은 나에게 발생하지 않았다. – mpdonadio
'date_consumed'를'DATETIME' 또는'TIMESTAMP'로 사용 하시겠습니까? – binnyb