메신저 내 모든 입력을 '깨끗하게'하는 영리한 방법을 설정하는 방법에 대해 궁금해합니다. 즉, 모든 스크립트의 시작 부분에서 실행되는 절차입니다. 내 스크립트의 상단에,사용자 입력을 효율적이고 안정적으로 처리 할 수 있습니까?
in-mynumber
tx-name
ph-phone
em-email
그래서 : 나는 예를 들어, 입력의 종류를 식별하기 위해 모든 입력의 시작에 2 편지 접두사를 추가, 그 작업을 수행하는 클래스를 만들고, 생각 난 그냥 (예를 들어) 함수를 실행 : 내가 각각 $ _GET과 $ _POST의 깨끗한 데이터 cPost을, 다른 두 배열을 생성 $ cGet 및 $ 것이다 ..so
function cleanInputs(){
foreach($_GET AS $taintedKey => $taintedValue){
$prefix = substr($taintedKey, 0, 2);
switch($prefix){
case 'in':
//I assume this input is an integer
$cGet[$taintedKey] = intval($taintedValue);
break;
case 'tx':
//i assume this input is a normal text
//can contains onely letters, numbers and few symbols
if(preg_match($regExp, $taintedValue)){
$cGet[$taintedKey] = $taintedValue;
}else{
$cGet[$taintedKey] = false;
}
break;
case 'em':
//i assume this input is a valid email
if(preg_match('/^[a-zA-Z0-9-_.][email protected][a-zA-Z0-9-_.]+.[a-zA-Z]{2,4}$/', $taintedValue)){
$cGet[$taintedKey] = $taintedValue;
}else{
$cGet[$taintedKey] = false;
}
break;
}
}
}
, 내 스크립트 내가 그 배열을 사용하기 위해 $ _GET/$ _ POST를 완전히 잊어 버려야한다. 나는 두 번째 접두어를 추가하여 입력의 최대 길이를 결정한다고 생각한다. 예 : tx-25-이름 ..하지만 그것에 대해 꽤 확신하지 못합니다. 만약 내가이 방법을 택한다면 아마도 OOP 방식이 더 좋을 것입니다.
당신은 어떻게 생각하십니까? 사용하는 좋은 방법이라고 생각하십니까?
내가 실제로 볼 수있는 부정적인 점 (나는 아직 그 방법으로 사용하지 않았다. 오늘 아침에 궁금하다.) 1. 내 응용 프로그램을 원하지 않으면 접두사와 절차가 많이 있어야합니다. 매우 제한적인; 2. 내 보낸 변수의 이름은 조금 길어질 것입니다. (문제는 3 ~ 6 개의 문자로 이루어져야합니다.)
정말 감사드립니다!
는편집 :
임 바퀴를 재발견하는 triyn하지, 내 게시물 입력 살균에 SISTEM에 대해 was't, 그러나 그것을 할 수있는 방법에 관한 것입니다. htmlpurifier를 사용하여 html 데이터에서 xss 삽입 가능성을 높이고 물론 매개 변수화 된 쿼리를 사용합니다. Im은 입력에 의한 입력을 더 잘 받아들이는 것이 더 쉬운 것인지 궁금해하고 있습니다. 또는 시작 부분에서 모든 것을 위생적으로 처리하고 스크립트의 나머지 부분을 깨끗이 처리한다고 생각하십시오. 내가 thougt 방법은 태양 아래서 기적과 새로운 것은 아니지만, 나는 측면에서 유용한 정보가 될 수있는 형식으로하지 않으면 입력을 잘라 낸다고 생각합니다 ...
왜 ' 이름 '필드는 문자와 아포스트로피 문자 만 포함해야합니다. 문자 또는 어포 스트로피가 아닌 모든 것을 제거하고 마지막 것에 슬래시를 추가하고 매개 변수화 된 쿼리를 실행하십시오. 이메일을 aspect하면, 이메일이 아닌 모든 것을 삭제하면됩니다.
나는 본질적으로 당신의 접근 방식에 잘못된 것을 볼 수 없으며, 좋은 생각이라고 생각합니다. – stefs
또한, 나는 당신이 술에 취해 있다고 생각합니다. 하지만 나는 프로그래머이기도하다. – stefs