2013-06-20 2 views
1

XQuery를 사용하여 사용자를 eXist-db에 로그온해야합니다. 물론이 코드를 사용할 수 있습니다MD5 암호 (XQuery)를 사용하여 사용자를 eXist-db에 로그온하십시오.

때문에 내가 암호와 다른 서비스에서 사용자 이름을받을 수 있다는 사실을, 내가 MD5 (암호화 해시 형태를받을 수 있다는 문제가
xquery version "3.0"; 

declare namespace exist = "http://exist.sourceforge.net/NS/exist"; 
declare namespace request="http://exist-db.org/xquery/request"; 
declare namespace xmldb="http://exist-db.org/xquery/xmldb"; 
declare option exist:serialize "method=json media-type=text/javascript"; 

let $userName := request:get-parameter("userName",()) 
let $hash := request:get-parameter("hash",()) 
let $login := xmldb:authenticate('/db', $userName, $hash) 
return 
    <ajax-response> 
     <success>{$login}</success> 
     <username>{$userName}</username> 
    </ajax-response> 

'그들이 할 수 있기 때문에 서비스에서 다른 서비스로 명확하게 전달되어야 함).

그러나 xmldb:authenticate 기능에는 암호가 명확해야합니다. 이 문제를 어떻게 해결할 수 있습니까? 어떤 생각? authenticate 기능을 사용하지 않고 eXist-db에서 '수동으로'로그인하는 방법이 있습니까?

답변

1

아니요, eXist-db는 MD5가 안전하지 않으므로 보안 위험이있는 인증 기능에서 해시와 작동하지 않습니다. 또한, eXist-db는 내부적으로 암호를 해싱하기 위해 MD5를 사용하지 않으므로 암호 검증이 어려울 수 있습니다. 두 가지 다른 해싱 기술과 일치하는 것은 불가능합니다.

불행히도 표준 기능으로는이 문제를 해결할 방법이 없습니다.

+0

내부적으로 SHA를 사용합니까? 복어? 그것은 무엇을 사용합니까? –

+0

이제 정보를 찾았습니다. Exist 1.4X는 사실 MD5를 사용했습니다. 최신 버전은 RIPEMD-160을 사용하고 있습니다. 다른 서비스의 형식에서 해시를 얻는다면 괜찮을 것입니다. –