サニタイジング에 대해서 아시는지요? 예를 들어 form등에서 입력한 문자중에 ', ",<,>,& 등의 특수문자가 있을경우 db에 저장할때 문제가
발생한다고 하는군요 요놈들을 바로 잡아주는게 필요하다는...
보안상의 큰문제가 된다고 하네요.
addslashs()함수 백슬래쉬만 넣어주면 되는것인지...
방법이라도 아시는분 예제도 있으면 좋겠구요 ^^
그리고 form입력값중에 email이나 나이 등 그에 맞는 형식의 값이
들어왔는지 검사하는거 있잖아요...
흔히 정규표현식을 써서 자바스크립트에서 검사를 하는데
클라이언트가 아닌 서버 즉, php구문만으로 검사해야하는데...
여기서도 정규표현식을 써서 하는지요?
도통 감이 안 오네요 누가 좀 갈쳐주세요... 사이트도 좋구요...
email에서는 /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Z a-z]+)$/
나이(숫자)에서는 /[^0-9]+/ 근데 서버쪽에서는???
마지막으로 이건 하는데 필요한지요? 백슬래쉬를 없애고
html형식으로 만드는데...
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$prmarray = cnv_formstr($_POST);
}
else {
$prmarray = cnv_formstr($_GET);
}
function cnv_formstr($array) {
foreach($array as $k => $v){
if (get_magic_quotes_gpc()) {
$v = stripslashes($v);
}
$v = htmlspecialchars($v);
$array[$k] = $v;
}
return $array;
}
첨가하여서 해킹하는 것을 말합니다.(맞나 모르겠네.)
대충 해결하는 방법은 정수 항목(대부분 키 필드)에 대해서는 intval 함수를 이용하면 되고요, 문자열에 대해서는 mysql_escape_string 함수를 이용하세요. (정확한건 더 찾아보시길...)
서버 쪽에서는 POST나GET으로 넘어온 request를 PHP의 함수 ereg를 이용해서 검사합니다. 정규식 표현은 따로 공부하세요.
cnv_formstr함수는 POST나GET으로 넘어온 request에서 루프를 돌려서 각 원소에서 \를 제거하고 html특수 문자를 변경하는 기능입니다.
"&" => "&AMP;" "<" => "&GT;" 등등
get_magic_quotes_gpc 서버에서 자동으로 \를 첨가하는 셋팅인지를 확인하는 함수
stripslashes 문자열에서 \를 제거
htmlspecialchars html특수 문자를 변경하는 함수