2013-05-11 2 views
-3
function clean($value) { 

     if(function_exists("mysql_real_escape_string")) { 

      if(get_magic_quotes_gpc()) { $value = stripslashes($value); } 
      $value = mysql_real_escape_string($value); 
     } else { 


      if(!get_magic_quotes_gpc()) { $value = addslashes($value); } 

     } 

    $value = strip_tags($value); 
    $value = htmlentities($value, ENT_QUOTES, 'utf-8'); 
    $value = htmlspecialchars($value , ENT_QUOTES , 'utf-8'); 

     return $value; 
    } 


if(isset($_GET)) 
{ 
    foreach($_GET as $k=>$v) 
    { 
     echo clean($v); 
    } 
} 

나는 그것이 내가 해당 웹 사이트에 직접 액세스 할 수 해달라고 소리로 onmouseover=prompt(929649)가 ... 같은 바보 저점을 얻는 것을 의미 내가 ...이 함수는 SQL 주입 및 xss를 방지 할 수 있습니까?

add_credit975" onmouseover=prompt(929649) bad=% 

를 참조

http://localhost/test.php?act=add_credit&rid=975&total=%22%20onmouseover%3dprompt%28929649%29%20bad%3d% 

때 누군가 단지 나에게 웹 페이지를 주었고 나에게 그것을 안전하게 만들어달라고 부탁했다.

및 PDO를 사용하여는, 문, SQLI을 준비하고 .....이 기능은 SQL 주입 및 XSS를 방지 할 수 있습니다 질문

+0

[더 - 궁극적 클린 - 보안 기능은 (http://stackoverflow.com/questions/4223980/the-ultimate-clean-secure-function) –

답변

0

는 아니, 아니에요, 그리고 SQL 주입! = XSS.

데이터베이스에 삽입하기 전에 SQL 주입을 방지하려면 데이터를 이스케이프 처리해야합니다. *_real_escape_string 대신 PDOprepared statements을 사용하는 것이 좋습니다.

XSS 악용을 방지하려면 HTML로 화면에 보내기 전에 데이터를 이스케이프 처리하십시오. 대개 데이터베이스에서 가져온 후에이 작업을 수행합니다. 대부분의 경우 strip_tagshtmlspecialchars이면 충분합니다. 예 :

<p> <?= $untrustedData; ?> </p>      <!-- <- strip tags --> 
<a name="<?= $untrustedData; ?>"> trusted data </a> <!-- <- htmlspecialchars --> 
+0

고맙습니다, 난 didn를 중복 ' say sqlljection == xss! .... 어쨌든 깨끗한 기능의 첫 번째 부분 (거의 9 라인)은 데이터를 스케 일링하는 것입니다. – max

+1

나는 오른쪽 필터를 선택하는 것이 상황에 달려 있다고 말하고있다. 모든 상황에 맞는 마법 기능은 없습니다. –

0

에서입니까?

번호