mysql
  • sha1
  • salt
  • 2009-07-01 2 views 0 likes 
    0

    쿠키를 설정 중입니다. 다음과 같이 입력하십시오 :MySQL 쿼리의 SHA salt

    $_COOKIE['test'] = SHA1('124'.'mysalt'); 
    

    이제 124는 내 원하는 ID입니다. 그래서 내 MySQL 테이블에서 다음과 같은 쿼리를 실행하려고합니다 :

    $sql = ("SELECT * FROM users WHERE SHA1(`id`) = '".mysql_real_escape_string($_COOKIE['test'])."'"); 
    

    SQL 쿼리에 "mysalt"를 추가하는 방법은 무엇입니까? 왜냐하면 다른 사람은 올바른 이드를 얻길 원하기 때문입니다.

    답변

    4

    여기에는 Concat()을 사용할 수 있습니다.

    SELECT ... Sha1(Concat(`id`, 'mysalt'))=... 
    
    +0

    유의 사항 : MySQL은이 경우 검색 속도를 높이기 위해 인덱스를 사용할 수 없습니다. 테이블에 다른 필드를 추가하는 것이 좋습니다. SELECT ... WHERE id = 124 AND tempkey = '87gesafouvgbaesofiuigsaf' – VolkerK

    1

    쿼리해야합니다 :

    $sql = ("SELECT * FROM users WHERE SHA1(CONCAT(`id`,`mysalt`)) = '".mysql_real_escape_string($_COOKIE['test'])."'"); 
    

    나는 당신이해야 할 노력하고 올바르게 이해합니다.

    +0

    과 같은 쿼리를 수행 할 때 새로운 응답을 확인하지 않은 채로 응답하는 데 너무 오래 걸리는 경우가 있습니다. – Roberto

    +1

    이렇게하면 요청이 실행될 때마다 MySQL이'SHA1 (CONCAT ('id', 'mysalt'))'를 계산해야하기 때문에'users' 테이블이 커질수록 성능이 떨어지고 성능이 저하됩니다. id_hash = mysql_real_escape_string ($ _ COOKIE [ 'test'])' – MaxAuray

    0

    사용 CONCAT : 아마 이미 제공

    $sql = ("SELECT * FROM users WHERE SHA1(CONCAT(`id`,'mysalt')) = '".mysql_real_escape_string($_COOKIE[''test''])."'"); 
    
    +0

    왜 SHA1 (CONCAT ('id', 'mysalt'))'를 포함하는 새로운 열'id_hash'를 추가하고, OP는 concat를 사용합니까? – markus

    1

    용액이 잘 작동 할 것이다, 그러나 당신은 당신이 이렇게 할 확신? 필드 "id"가 정말로 고유 한 ID라면 "LIMIT 1"을 사용하여 mysql이 모든 항목을 검색하지 못하게 할 수 있습니다. 또 다른 한 가지는, 별도의 사전 계산 된 필드를 사용하는 것이 어떻습니까? 나는 모든 쿼리에서 mysql이 불필요하게 모든 sha1 값을 계산해야한다는 것을 의미합니다. 마지막으로 한 가지. 왜 당신이 당신의 접근 방식을 사용하고 있는지 불확실하지만, 최선의 추측은 일종의 세션 키를 구현하는 것입니다. 나는 이것이 몇 가지 이유 때문에 나쁜 생각 인 것입니다 : 누군가 소금을 잡으면 모든 사람의 계좌를 이용할 수 있습니다. 누군가가 하나의 "세션"을 냄새 맡는다면 그는 언제든지 그것을 재사용 할 수 있습니다. 약한 소금을 선택하면 심각한 결과를 초래할 수 있습니다. HTH.

    관련 문제