2016-07-24 4 views
0

저는 약간의 문제가 있습니다. 지금 바로 직면하고 있습니다. 등록과 로그인은 잘 작동하지만 그 중에 하나의 결함이 있습니다. 사용자 이름으로 공간을 입력하는 경우 (기본적으로 공간을 몇 번 누르고 그 공간을 누르면) 실제로 등록 할 수있게되며 로그인 할 때도 마찬가지입니다.첫 번째 문자로 공백 문자

그래서 기본적으로 사용자 이름과 비밀번호 입력을 피하기 위해 몇 번 눌러서 등록 할 수 있습니다.

+1

경고 ** ** mysql을 사용할 때 [매개 변수가있는 쿼리] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)와 ['bind_param' ] (http://php.net/manual/en/mysqli-stmt.bind-param.php)를 사용하여 쿼리에 사용자 데이터를 추가하십시오. ** 심각한 [SQL injection bug] (http://bobby-tables.com/)를 만들었 기 때문에 문자열 보간이나 연결을 사용하여 **이를 수행하지 마십시오. **'$ _POST' 또는'$ _GET' 데이터를 쿼리에 직접 입력하지 마십시오. 실수로 누군가를 악용하려고 시도하면 매우 위험 할 수 있습니다. – tadman

+0

** 경고 ** : 사용자 고유의 액세스 제어 계층을 작성하는 것은 쉽지 않으며 심각하게 잘못 처리 할 수있는 많은 기회가 있습니다. [Laravel] (http://laravel.com/)과 같은 최신 [개발 프레임 워크] (http://codegeekz.com/best-php-frameworks-for-developers/)가있을 때 자신의 인증 시스템을 작성하지 마십시오. 강력한 [인증 시스템] (https://laravel.com/docs/5.2/authentication)이 내장되어 있습니다. 절대 최소한 [권장 보안 베스트 프랙티스] (http://www.phptherightway.com/#security)를 따르고 비밀번호를 일반 텍스트로 저장하지 마십시오. – tadman

+0

그냥 알다시피, 이것에 관해서는 아무것도 "괜찮습니다"그리고 아무것도 없다면 이것은 벌금과 반대입니다. 여기에서 너무 많은 문제가있어 다시 생각해볼 필요가 있습니다. – tadman

답변

0

새 레코드를 데이터베이스에 삽입하기 전에 trim을 사용하여 사용자 이름의 앞뒤 공백을 제거하십시오.
사용자 이름이 공백으로 만 이루어진 로그인의 경우 등록을 거부하는 코드를 추가하는 것이 좋습니다.

$nameX = trim($_POST['name']); 
if ($nameX == '') { 
    // registration rejected 
} 
else { 
    // insert the record in the database 
} 

사용자가 로그인 할 때 trim을 사용해야합니다.

+0

흠 흥미 롭기 때문에 이드는 $ nameX = trim ($ nameX); $ nameX = $ _POST [ 'name'] 뒤에; 옳은? 죄송합니다, Im PHP가 아주 새롭습니다 –

+0

예, 또는 내 대답과 같이 한 줄의 코드로 처리 할 수도 있습니다. – Jocelyn

+0

대단히 감사합니다. –

관련 문제