2010-01-11 3 views
4

데이터가 특정 필드 (예 : 특수 문자/숫자 등을 포함 할 수없는 등)에 대한 유효성을 확인하여 입력 된 데이터를 위생적으로 처리하려고합니다. 그러나 언제 어떻게해야할지 모르겠습니다. 그것은 암호 필드에 온다. 암호가 단순히 해시 된 것처럼 위생 처리가 필요합니까? 사용자가 암호 텍스트 박스를 통해 악의적 인 것을 삽입하려는 경우 의심스러운 항목이 있는지 확인해야합니까? AFAIK을 사용하면 일부 사용자는 '<'과 같은 특수 문자를 사용하여 공격 위험을 유발할 수 있습니다. 암호 필드를 unsanitized로 두어야합니까? 사용자가 암호에서 모든 종류의 문자를 사용해야한다고 생각하기 때문에 암호 입력을 제한하는 것이 최후의 수단입니다.암호 입력 소독이 필요합니까?

감사합니다.

+4

이것에 대해 생각하고 올바른 일을 해줘서 고맙습니다. 나는 당신을 특정한 특성 세트 또는 단지 10 문자 이하로 제한하는 웹 사이트에 지쳤다. 그리고 네, 저는 바보 같은 건물 은행 사이트에 대해서 말하고 있습니다. – NotMe

+0

lol, 나는 당신이 무슨 뜻인지 안다. 나는 여전히 사용자의 암호를 해킹하는 유효한 이유를 아직 보지 못하고있다. – XSL

+0

일부 문자를 허용하지 않을 수도 있습니다 (스트립하지 않을 수도 있음). 일부 사람들은 유닉스 패스워드에 탭 문자를 넣곤했지만 (예를 들어, 제어 문자) (나는 믿는다). –

답변

3

응용 프로그램에서 해싱하는 동안 확인을해야합니다.

A는 당신이 asp.net을 사용하는 것을 고려 주제를 비트,하지만 당신은 PHP와 MySQL을 사용하고이 같은 일을하는 경우 그에게 주목할만한 예외는 다음과 같습니다 당신이 원하는 것 그 경우

UPDATE users SET password = PASSWORD('$pwd') WHERE userid = $uid 

을 먼저 $ pwd를 위생 처리합니다.

+0

답장을 보내 주셔서 감사합니다. 이 모든 작업을 수행하기 위해 ASP.NET 멤버십 컨트롤을 사용하고 있으므로 수동으로 비밀번호를 변경하지 않아도됩니다. 따라서 해시 만 저장되며 이는 위협이 없다는 것을 의미합니다. – XSL

+0

PHP \ MySQL의 경우 해시 된 $ pwd를 삭제해야하는 이유는 무엇입니까? – Ubeogesh

+1

@Ubeogesh $ pwd가 해시되지 않았습니다. MySQL의 PASSWORD() 함수는 이것을 해시합니다. 즉, 암호 해싱을 사용할 수있는 더 나은 대안이 있으므로 MySQL의 암호 함수를 사용하지 않는 것이 좋습니다. –

3

SQL 주입 공격이 염려되는 경우 매개 변수가있는 쿼리를 사용하여 데이터베이스와 상호 작용해야합니다. 유효한 문자를 암호로 결정하는 것이 비즈니스 규칙이므로 고객이 말하지 않는 동안 아무 것도 제거하지 않을 것입니다.

다른 모든 입력은 페이지 출력에 표시 될 수 있고 XSS 공격을 유발할 수 있으므로 반드시 새 니타 이징해야합니다.

+0

안녕하세요. 사용자가 암호를 등록하고 변경할 수 있도록 ASP.NET 컨트롤을 사용하고 있으므로 쿼리가 자동으로 매개 변수화됩니다. UserCreated 이벤트 전에 다른 입력을 수동으로 위생 처리하고 있지만 비밀번호 입력이 인코딩되어 실제 비밀번호가 변경 될 수 있습니다. (예 : <<). – XSL

+0

결론은 다음과 같습니다. 항상 그다지 <<< –

+0

으로 바꾸지 않습니다. 제가 프로젝트에서 작업하는 한 그게 당연한 일입니다. 괜찮습니다. 나는 장기적으로 생각하고있다. 프로젝트가 바뀌면 다른 개발자들이 패스워드와 직접 상호 작용할 수 있고 혼란을 일으킬 수있는 동일한 방법으로 인코딩하지 않을 수도있다. 이 가능성은 거의 없지만 조심해야합니다. – XSL