나는 무엇을 탈출하는 데 필요를 보내면 쿼리가?
문제
할 때 SQL 쿼리를 실행하고,당신은 당신의 문자열 또는 사용자 실행할 수 있는 악성 SQL 에서 당신의 웹 사이트입니다.
나는 보통 이 기능을 갖 escape_string(blah),는:
- 대체는 이스케이프(
\
는)두 배 이스케이프(\\
). - 대체 작은 따옴표(
'
로)이 작은 따옴표(\'
).
이 적합한가?에 구멍이 있는 나입니까?이 있는 라이브러리는 이것을 할 수 있는 신속하고 안정적으로까요?
나보고 싶은 우아한 솔루션에서는 Perl,Java,PHP.
해결책
최상의 보안을 위해,성능 및 정확성에 사용할 준비한 문입니다.를 수행하는 방법은 다음과 같은 이 예제의 많은에 포함,다른 언어로 PHP:
https://stackoverflow.com/questions/1973/what-is-the-best-way-to-avoid-sql-injection-attacks
다른 팁
또한 것 탈출 댓글(더블 dash)
--
좋은 일에서 사용하 PHP PDO.그것은 많은 추측을 다루고 보안을 SQL(의 모든 SQL 재료에 일반).그것은 지원비즈니스 성장에 도움을 드릴 것입니다 이 방법으로 방해 SQL Injection Attacks.
좋은 프라이머에 PDO 에 포함된 예약 PHP 선집 101 필수적인 도움말을,트릭 및 해킹에 의해 데비 Shafik etc.2nd Ed.학습하게도 및 우수는 전문 기술을 제공합니다.내가 없어 아무것도 생각이 다른 것보다 실제 SQL 쿼리 더 이상입니다.
는 언어가 사용하고 있습니까?그것은 것 같다 꽤 많은 그들 모두가 내장된 SQL 에서 탈출하는 기능을 사용하는 것이 더 좋을 것이다.
예를 들어,PHP mysql_real_escape_string 고 addslashes.
당신이 사용하여 더 나은 준비된 문의 자리 표시자와 함께.당신은 당신을 사용하여 PHP,.순...어느 방법으로,준비 계산서를 제공할 것이 더 보안,하지만 내가를 제공할 수 있었습니다.
PHP 에서,저는 이것을 사용하나 감사하겠 모든 의견에 대한 그것:
function quote_smart($valeur)
{
if (get_magic_quotes_gpc())
$valeur = stripslashes($valeur);
if (!is_numeric($valeur))
$valeur = mysql_real_escape_string($valeur);
return $valeur;
}
$IdS = quote_smart($_POST['theID']);
$sql = "
SELECT * FROM Students
WHERE IdStudent={$IdS};
";
구 한 번 더 확인하는 경우 필드 NULL 이 될 수 있습니다:
$picture = NULL;
$theidyouwant = 7;
$Name = 'WOOD';
if(is_null($picture))
$p = 'NULL';
else
$p = "'".quote_smart($picture)."'";
$IdS = quote_smart($theidyouwant);
$requete = "SELECT * FROM Students
WHERE IdStudent={$IdS} AND
PictureStudent={$p} AND
NameStudent='{$Name}';
";
는 그것을 즐기세요!(희망 게시물을 올바르게 보내는 밑줄과하지 않_;)
사용 준비/쿼리!
사용 준비한 문입니다.
MySQL 쿼리를 사용할 경우,같은 또한 확인을 탈출하는"_"문자 그대로 탈출하지 않으로 mysql_real_escape_string.
에 대한 참조,확인 기
MySQL C API 는 그것의 자신의 mysql_escape_string()
.그것을 사용하거나 이에 상당하는 것이 최고입니다.
나는 확실하지 않는 경우 MySql 지원하는 쿼리,그렇다면,당신은 노력해야 합니다 이 경로입니다.이를 통해 사용자의 입력이 아무것도 할 수 없습니다.
그렇지 않으면 일부는"나쁜"문자가 외에 무엇을 언급한 것인 세미콜론(;)과 의견(고--/**/).