2014-11-27 2 views
1

로그인 할 때이를 등록에 사용하고 전자 메일 및 암호에 기호 및 특수 문자를 허용합니다. 나는 이것이 해커들에게 주사를 놓는 심각한 위협이된다는 것을 안다. 내 질문은 : 입력 (예 : '전자 메일', '암호')을 문자열로 변환하고 서버에서 코드 및 명령으로 처리하지 못하게하려면 어떻게해야합니까?변수를 문자열로 바꿉니다.

나는 어디서부터 시작해야할지에 대한 단서가 정말로 없다. 그러나 시도한 바가있다. mysqli_escape_string; 그러나 당신이 가장 잘 알고 있듯이, 그것은 매우 얇고 비추천입니다. 나는 약간 연구하는 것을 꺼리지 않고, 시작하기 위해 약간의 정보를 매우 감사 할 것입니다!

+0

PDO를 살펴보십시오. 이렇게하면 신뢰할 수없는 입력을 사용하는 것이 훨씬 쉬워집니다. –

+0

@FoxWilson 나는 PDO가 더 낫다는 것에 동의하지만 mysqli는 prepared statement도 지원합니다. PDO와 관련이 없으며 PDO 쿼리 자체로 사용자 입력을 보호하지 않습니다. – Devon

+0

참고 mysqli_escape_string ('mysqli_real_escape_string')은 더 이상 사용되지 않을 것이라고 확신한다. mysql_real_escape_string은 그렇지만. –

답변

1
  1. mysql 쿼리를 실행할 때 준비된 문을 사용하십시오. (자세한 내용 here) 가능
  2. 제한 입력 필드 길이 (.이의 실행을 방지 일반적으로 MySQL을 주입 쿼리가 긴 이상 변경 쿼리도 실수에 의해 취약점이)
  3. 이 MySQL을 위해 필요한 권한 만 줘 사용자. 사용자가 읽을 필요가있는 곳이면 읽기 권한 만 제공하십시오.
  4. 암호와 같은 중요한 데이터를 암호화하십시오. 소금에 절인 암호 해싱을 사용하십시오.
+2

암호를 10 자로 제한하는 것은 좋지 않습니다. – Devon

+0

예. 입력 필드 길이를 제한하여 의미를 설명하려고했습니다. 나는 그것을 바꿨다. 감사. –

+0

나는 입력 암호 필드에 제한을 두지 말 것입니다. 가능한 순열과 결합 수가 많을수록 균열하기가 더 어렵습니다. – Aditya

2

어디서부터 시작해야할지 모르시는 분은 그리 나쁜 소식이 아닙니다. 그러나 무엇을해야할지 모르는 경우가 아니라면 자신 만의 로그인/등록 시스템을 만들려고하지 않는 것이 좋습니다. 특히 당신이 보안에 관심이 있다면. 노련한 프로그래머조차도 매우 엉망진창입니다. 필자는 처음으로 PHP에서 로그인/인증 모듈을 롤링하는 데 많은 시간을 보냈으며, 대부분의 경우 다른 사람들이 대부분의 시간에 부적절하게 구현 한 코드를 상속하는 데 많은 시간을 보냈습니다.

웹 학습을 권장합니다 프레임 워크. PHP에서 내가 가장 좋아하는 웹 프레임 워크는 Laravel이고 Code Igniter입니다. Laravel이 내가 가장 좋아하는 사이트입니다. 여기서도 학습 곡선을 찾을 수 있지만, 사용자 인증을 정확하고 안전하게 구현하는 데 더 많은 지원을 찾을 수 있습니다. 예를 들어 : http://laravel.com/docs/4.2/security

프레임 워크를 사용하면 DB 액세스를 재미 있고 쉽고 안전하게 만드는 많은 도우미 방법을 사용할 수도 있습니다. examples here을 확인하십시오! 원하는 경우 원시 SQL을 항상 사용할 수 있지만, 일상적인 CRUD 응용 프로그램은 필요 없습니다!

마지막으로 한 번만 경고하겠습니다. PDO 또는 MySQLi 준비 문을 사용하는 것이 좋습니다 (PDO 선호).

제 생각 엔 로그인/등록을 만드는 방법을 고려 중이므로 응용 프로그램이 너무 멀리 떨어져 있지 않으므로 원시 PHP를 사용하여 스스로 붙잡아 두지 않을 것입니다. :)

+0

프레임 워크를 사용하는 경우 프레임 워크가 최신 버전인지 확인하십시오. 왜냐하면 공격자는 프레임 워크를 더 열심히 개발하려고하기 때문입니다. 그들은 취약성을 발견하면 프레임 워크를 사용하는 모든 응용 프로그램을 이용할 수 있기 때문에 더 관심이 있습니다. –

+0

입력 해 주셔서 대단히 감사합니다! 사실 훨씬 더 의미가 있습니다. 내가 스스로 할 수있는 유일한 이유는 내가 말할 수 있기를 원하기 때문이다. 하지만이 글을 읽은 후에 지금은 대신 프레임 워크를 사용할 수 있습니다. – saccre

+0

@plbsam은 프레임 워크를 최신 상태로 유지하는 데있어 정확합니다. 다행스럽게도 그들은 정기적으로 업데이트되며, 자신의 보안 인증 시스템을 구축 할 때 자신이 신경 쓰는 것보다 훨씬 더 많은 테스트를 거칩니다. 그러나 사용 편의성과 모든 공구를 사용하면 이점을 누릴 수 있습니다. 툴링에는 fb/github/google 로그인을 원한다면 out-of-the-box 기능, 예쁜 URL, DB 스키마 관리, 모델, 뷰, 컨트롤, 배포 스크립트, 템플릿이 포함되며, 효율적인 플러그인이 있습니다. 웹 앱을 만들 수 있습니다. 거기에 없을 때 항상 수동으로 할 수 있습니다. :) –

관련 문제