2014-04-21 13 views
0

빠른 질문 중 하나입니다.MySQL은 MD5를 인식하지 못합니다.

MD5 암호가 MySQL 항목과 동일하지만 atm이 잘못되었습니다. (그래도 내 오프라인 서버에서 작동 확인 ..)

당신은 제가이 쿼리에 잘못된 뭐하는 거지 알려 주시기 바랍니다 수 :

SELECT * FROM `users` WHERE `username` = '".trim($_POST['username'])."' AND `password` = '".md5(trim($_POST['password']))."' LIMIT 0,1; 

감사합니다!

+0

잘못된 것은 SQL 문에 게시 된 데이터를 직접 주입하는 것입니다. – Pitchinnate

+0

처음에는 변수에 쿼리를 직접 삽입하여 코드를 SQL 삽입에 매우 취약하게 만듭니다. 둘째, 준비된 문과 변수를 사용해야합니다. 셋째, 쿼리를 출력하여 데이터베이스에 직접 붙여 넣어 오류가 무엇인지 확인해 보았습니까? 'username '이'admin'또는 1 = 1 -'이라고 상상해보십시오. 갑자기 암호를 모른 채 사용자 이름이 "admin"인 사용자로 갑자기 로그인하게됩니다. 시원한! – h2ooooooo

+0

오류가 있습니까? – Pitchinnate

답변

0

댓글에서 설명했듯이 Mysqli 또는 MySQL PDO 클래스를 사용하고 싶습니다 ... 개인적으로 저는 보안에 많은 도움이 될 수있는 PDO를 사용하며 주위를 둘러 보는 것이 그리 어렵지 않습니다. . 여기

나를 도와 튜토리얼입니다 : http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

당신이 당신이 게시 한 방법을 수행 할 경우, 전체 PHP는 MySQL의 문을 게시 할 수있는, 우리가 옳은 방향으로 당신을 가리킬 수 있습니다 : D

아, 또 다른 요점은 MD5도 사용하고 싶지 않다는 것입니다 ... 무지개 공격에 정말 약합니다 ... 소금으로 복어를 사용해보십시오 ... 여기에 대한 설명이 있습니다 : http://www.the-art-of-web.com/php/blowfish-crypt/

+0

그 블로우 피쉬 크립트 튜토리얼은 혼란 스러웠습니다 .- "좀 더 보았지만 사람들은 password_hash() 대신에 – user3465843

+0

을 추천하는 것 같습니다. 사람들이 배우는 것을 보는 것이 재미 있습니다 ... 그리고 방금 새로운 것을 배웠습니다. D ... 'password_hash()'로 바꿀지도 모릅니다. gunna가 조금이라도 읽었습니다. 이전 버전이 불안정하다는 것에 대한 몇 가지 의견이 있습니다. –

관련 문제