2009-07-08 4 views
0

"사용자의 입력을 절대 신뢰해서는 안됩니다."이것은 내가 웹 어딘가에서 읽은 것입니다.사용자 입력을 확인하고 mysql 주입을 방지하는 방법은 무엇입니까?

현재 웹 양식이 있는데, 사용자 이름과 이메일을 입력합니다. 사용자 이름 필드에 대해, 어떻게 제어, 확인 및 mysql 주입을 방지 ?? 현재 내 PHP 스크립트에 난 단지 이렇게 :

$username = mysql_real_escape_string($_POST['username']); // prevent mysql injection 

좀 자습서의는 mysql_real_escape_string 함수를하기 전에, 그들은 등과 같은 다른 기능,를 htmlentities를 포함 보았다 (그것이 무엇인지 기억할 수 없었다, 나는 그것을 발견 캔트 지금, 한숨)

mysql_real_escape_string 전에 소위 "htmlentities"함수를 포함해야합니까?

일반적으로 사용자의 입력 데이터를 확인하는 데 사용하는 방법은 무엇입니까?

오 나중에, 다른 기능 :

stripslashes(); 
serialize(); 
urlencode(); 

난 사람들을 포함해야합니까?

+0

새 질문을하기 전에 검색하십시오. http://stackoverflow.com/search?q=sql+injection –

답변

11

데이터를 데이터베이스에 저장하는 것이 중요합니다. SQL 주입 공격으로부터 보호됩니다.

htmlentities()htmlspecialchars()은 SQL 삽입 공격과 관련이 없습니다. 그들은 XSS 공격과 관련이 있습니다.이 공격은 사용자가 조사해야 할 다른 주제이며, 사용자 입력을 웹에 다시 표시하는 경우 관련 문제입니다. @chaos 같은

+0

더 나은 자신을 넣을 수 없습니다. http://en.wikipedia.org/wiki/Cross-site_scripting –

+0

다른 SQL 공격과 XSS 공격은 무엇입니까 ?? htmlentities() 및 htmlspecialchars()를 포함하면 XSS 공격을 막을 수 있습니까 ?? – jingleboy99

+0

다른 형태의 공격에 대해서는 다음 질문을 참조하십시오 : http://stackoverflow.com/questions/438073/do-stackoverflow-users-agree-with-the-cwe-sans-top-25-most- dangerous-programming. htmlentities() 및 htmlspecialchars()는 출력을 생성하고 입력을받지 않을 때 사용해야하며 둘 다를 동시에 사용하지 않아야합니다. 실제로 당신을 보호하는이 방법들에 대한 많은 희망을 가지려면, 당신은 마술 의식으로 덜 대우해야하고, 그들이하는 일을 이해하고, * 왜 * 어떻게 * 적용되어야하는지 더 이해할 필요가 있습니다. – chaos

1

는 말했다 권리

당신은 또한 당신이
2
또한 prepared statements를 사용하여 볼 수 있었다

(나는에 대한 매개 변수가있는 쿼리에 해당 생각

의 PARAMATERS을 피할 것 PDO 같은 데이터베이스 추상화 레이어를 사용할 수 있습니다

SQL Server)를 사용하면 공격 대상을 더욱 줄일 수 있습니다.

관련 문제