2012-08-26 4 views
0

안녕하세요 죄송합니다. 어리석은 질문 일 수 있습니다. 내 사이트에 sha + salt를 사용해 보겠습니다. 내 소금을 무작위로 추출하는 방법을 궁금해합니다. 등록시 둘 다 데이터베이스에 해시됩니다. 또한 사용자 검증을 위해 sha와 salt를 모두 decrpyt 할 필요가 있습니다. 누군가가 올바른 탐지 또는 좋은 기사를 지적하면 좋을 것입니다. 고마워요. 또한 웹 사이트의 보안 기능에 익숙하지 않아요. 현재 보안 구현을 현재 내 사이트에서 사용하고 있을지에 대해 조사하고 있습니다. URL 해싱 염분

에서

  1. 암호 해시
  2. 안티 - SQL 주입
  3. 숨기기 값 내가 내 보안에 추가해야하는지 더 알고 싶습니다. 나는 학교 관리 시스템을 프로젝트로 만들고있다.

    지금까지 내가 찾고 있습니다. Anti-bruteforce와 내 교수님은 HTTPS에 대한 힌트를 주셨습니다.

    또한 비밀번호가 sha + salt 인 경우 로그인을 확인하는 방법은 무엇입니까?

+0

http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection- in-php http://phpsec.org/projects/guide/ http://php.robm.me.uk/ – snuffn

답변

2

상당히 큰 질문이므로 직접 설명해주기보다는 유용한 리소스로 안내하는 것이 더 쉽습니다.

웹 암호화에 대한 소개는 List Apart wrote a nice article입니다. 구현에 대해서는별로 논의하지 않지만 멋진 개요를 제공합니다.

보안 허점 목록 및 해당 공격 방법은 OWASP Top Ten Project을 참조하십시오.

다음은 꽤 포괄적 인 PHP Security의 가이드입니다.

마지막으로 로그인 시스템 생성에 대한 자세한 내용은 this question을 참조하십시오.

아마도 스택 오버플로 주위를 검색하는 것이 좋습니다. 질문에 대한 좋은 답변이있을 수 있습니다.

+0

감사합니다. 나는 이것이 거대한 문제라는 것을 알고 있습니다. –

+0

4 회 매력, tgt입니다 :) –

1

인코딩 할 문자열의 해시에 임의의 문자열을 추가하면 소금을 생성 할 수있는 충분한 방법이 있습니다. this on SO].

당신은 필요하지 않습니다 및 [MD5 같은] 샤가 알고리즘이 아닌 토굴 기능을 해싱 때문에 당신이 어떤 샤 결과의 암호를 해독 할 수 없습니다 즉 그것은 나중에 검색을 위해 아무것도 숨길 의미가 아니에요 :이 내가 등록한 사이트의 관리자가 데이터베이스에서 내 비밀번호를 읽는 것을 원하지 않기 때문에 중요합니다.

해시는 [거의 합계] injective way의 데이터 집합의 요소를 다른 요소의 짧은 요소로 매핑합니다. 임의의 긴 문자열을 고정 길이 키에 매핑합니다. 이렇게하면 해시 된 도메인에서 비교할 수 있습니다. 실제로 원래 값을 알고 있습니다.

hash(value1) = hash (value2) => value1 = value2 

내가 거의 때문에 해싱 알고리즘은 어떤 충돌이 상기 [예를 들면 hash(value1) = hash(value2)과 같은 이전 진술에 대한 예외는 2 가지 값이 동일 함을 의미하지 않습니다.] - 염분은 이와 관련하여 도움이됩니다.

이 이것이 당신이 dB로 암호를 저장하는 방법입니다 말했다

  • 는 소금을 생성;
  • 앞에 실제 암호에 대한 소금 : 앞에 넣어야합니다. 앞에는 dictionary attacks을 방지해야합니다.
  • hash 적당한 알고리즘을 가진 연결된 문자열 [내가 단지 sha1을 선택했다];
  • 문자열과 소금을 모두 db에 저장하십시오. 코드에서

:

$user -> salt = your_salt_generator(); 
$user -> hashedPwd = hash('sha1', $salt . $userChosenPwd); 

PWD $username/$password에 대한 확인은 다음과 같습니다과

  • GET 사용자 DB에서 $username을 부여;
  • 위의 프로세스가 저장된 소금과 주어진 암호를 사용하고 저장된 해시와 같은지 확인하십시오. 코드에서

: URL의 값을 숨기고 소개

hash('sha1', $user -> salt . $sentPassword) == $user -> hashedPwd; 

, 그것은 보안 것보다 SEO/가독성 항목 더 : URL을 라우팅에해야한다 [예를 들어, http://somesite.com/products/:id을 사용하여 id-th 제품에 액세스하십시오.] 귀하의 서버 로직은 귀하의 사이트에 대한 요청에 포함되는 것에 취약하지 않아야합니다.


에 대해서는 MySQL의 주사, 우리는 PDO extension에서 prepared statements 때문에 그들을 제거되었다.

이렇게 주위에 수백만의 답변이 있으므로 주위를 둘러보십시오.

작업을 계속하십시오!

+0

고마워요! 이걸 4 일 안에 선물 할거야. 내가해야 할 나머지는 디자인, 보안 및 인쇄 알고리즘 (데이터베이스의 간단한 계산 값)입니다. = D –

+0

-1 암호 해시를 위해 단일 반복 해시 함수를 사용합니다. – CodesInChaos

1
정말

하지 귀하의 질문에 직접 대답하지만, 그것은 당신을 위해 염장을 처리 할 http://www.openwall.com/phpass/

phpass로보고, 많은 보안 전문가들에 의해 검토하고있는 것으로 간주 매우 좋은 암호 해시 도구