2010-12-06 5 views
6

다음은 광고 웹 사이트입니다 ... PHP와 MySQL을 사용하여 레코드를 db에 삽입합니다.유효 입력에도 SQL 주입 여부를 확인해야합니까?

본인에게는 HTML 양식이 있으며, 진행하려면이 양식을 작성해야합니다.
이메일 (특수 이메일
이름 (허용 만 문자)
전화 (허용 숫자 만) : 아래

양식 입력 및 각 입력 (자바 스크립트)에 만들어진 검증이다 -regexp match)
헤드 라인 (특수 문자는 허용되지 않으며 다른 모든 문자는 유효합니다. 특수 문자는 !(#)<> 등을 의미합니다. 최대 길이는 35 자입니다.)(헤드 라인과 동일, 길이 만 제한 없음) 텍스트
가격 (허용 숫자 만)

나는 헤드 라인텍스트,하지만 아무것도에 mysql_real_escape_string()을한다.

제 질문은 간단합니다. 충분합니까?

나는 이 없으며 다른 보안은입니다.

당신은 모든 MySQL Extension을 사용해서는 안

var alphaExp = /^[a-zA-ZåäöÅÄÖ\s\-]+$/; 
var numExp = /^(?=(?:\D*\d){0})[\d -]{0,20}$/; 
var num_only = /^[0-9]+$/; 
var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/; 
var textExp = /^\s*([\wåäö\-\*][^\w]*){3}.*$/gmi; 
var headlineExp = /^[\s\da-zA-ZåäöÅÄÖ&()+%\/*$€é:,.'"-]*$/; 
+4

사용자가 JavaScript를 사용하지 않으면 어떻게됩니까? –

+3

"특별한 이메일 - 정규 표현식 일치"는 많은 사람들이 잘못 이해했기 때문에 나를 두렵게합니다. 이름에 글자 만 허용하면 올바르지 않습니다. –

+0

regexps가 업데이트 중입니다 ... 일반적으로 의미가 있지만 regexps가 올바른지 확인하십시오. –

답변

8

자바 스크립트로 구현 된 모든 보안 수단은 사용자가이를 피할 수 있습니다 (예 : 코드를 끄거나 청취자를 제거하거나 코드를 어지럽 혀서). 거기에 의뢰하지 마십시오!

+4

+1 또는 심지어 JavaScript 코드를 건너 뛰고 가짜 입력 값이있는 POST 요청을 직접 작성하는 경우도 있습니다. –

+1

+1 @David Gelhar tamperdata 또는 컬. – rook

1

UPDATE. 2010 년이고 PDO은가는 길입니다.

3

확인할 사용자가 제공하는 모든 것. 사용자가 보내기 전에 JavaScript 실행. POST 요청을 보내려면 JavaScript 코드를 실행할 필요가 없습니다.

1

거의 모든 경우에 보안 질문과 관련하여 "나는 진정으로해야합니까?"라는 기본 대답은 "예, 절대적으로"입니다.

<?php 
/* Execute a prepared statement by passing an array of values */ 
$sql = 'SELECT name, colour, calories 
    FROM fruit 
    WHERE calories < :calories AND colour = :colour'; 
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
$sth->execute(array(':calories' => 150, ':colour' => 'red')); 
$red = $sth->fetchAll(); 
$sth->execute(array('calories' => 175, 'colour' => 'yellow')); 
$yellow = $sth->fetchAll(); 
?> 

위의 코드는 PHP 라이브러리로부터 this page이다. mysql_real_escape_string()을 더 이상 신경 쓰지 말고 준비된 문을 SQL 쿼리와 통합하십시오.

5

나는 다른 보안 조치가 전혀 없습니다.

보안은 레이어로 구현되어야합니다. 많은 경우, 프로그래머는 자신의 권한 범위를 벗어 났기 때문에이를 이해하지 못합니다 (대부분 컴파일해야만합니다. 합리적인 모든 시점에서 보안을 구현해야합니다. 특히 와일드 와일드 웹 (Wild Wild Web)과 함께 사용하는 경우 사용자 입력을 신뢰할 수 없습니다.정규 표현식 검사, 알려진 주입 검사 및 서버 및 응용 프로그램 강화는 필수적입니다.

합리적인 기준이 첨부되어 있습니다. 때로는 보안 극장이나 과잉 공격이 쉽습니다. 구현할 필요가있는 예방 조치의 수준을 결정하는 것은 귀사 및 다른 프로젝트 이해 관계자에게 달려 있습니다. 시간과 물자에는 그것과 관련되었던 비용이있다, 그래서 당신이 안전 실시에 $ 100,000를 쓰고 단지 $ 80,000 반환을 얻는 경우에, 그 후에 각자 격파 한.

1

많은 추천 할 것입니다 자바 스크립트를 우회에 대해 이야기하지만, 상황이 모두하게하기 때문에 나는 더 한 단계를 가고 싶어하고 그것을 수행하는 방법을 보여 차. 침투 테스트 등을 할 때 사용하기를 좋아하는 파이어 폭스 애드온은 다음과 같습니다 : Groundspeed.

수백만 번 말했듯이 클라이언트 쪽 유효성 검사는 잘 작동하는 사용자가 잘못된 요청을 사용하여 서버를 치는 것을 방지하기 위해 사용할 수 있기 때문에 좋지만 모든 유효성 검사 클라이언트 측을 다음과 같이 서버 측에서 미러링해야합니다. 잘. 네, 준비된 진술은 당신의 친구입니다. 또한 많은 사람들이 잊어 버릴 단계이기 때문에 데이터베이스에서 나오는 모든 것을 위생 처리하십시오.