>백엔드 개발 >PHP 튜토리얼 >PHP를 사용할 때 SQL Server에서 문자열을 안전하게 이스케이프하는 방법은 무엇입니까?

PHP를 사용할 때 SQL Server에서 문자열을 안전하게 이스케이프하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-14 02:36:09311검색

How to Safely Escape Strings in SQL Server When Using PHP?

PHP를 사용하여 SQL Server에서 문자열을 안전하게 이스케이프하기

PHP를 사용하여 SQL Server와 상호 작용할 때 사용자가 제공한 데이터가 올바르게 이스케이프되었는지 확인하는 것이 중요합니다. 주입 공격. mysql_real_escape_string()은 MySQL에서 일반적으로 사용되지만 SQL Server에서는 사용할 수 없습니다.

문자열 이스케이프에 대한 대안: mssql_escape()

MySQL과 달리 SQL Server는 다음을 위한 전용 함수를 제공하지 않습니다. 문자열 이스케이프. 그러나 자신만의 함수를 만들 수 있습니다.

function mssql_escape($data) {
    if (is_numeric($data)) {
        return $data;
    }
    $unpacked = unpack('H*hex', $data);
    return '0x' . $unpacked['hex'];
}

$escaped_value = mssql_escape($user_input);

이 함수는 데이터를 16진수 바이트 문자열로 인코딩하여 모든 특수 문자가 이스케이프되도록 합니다.

mysql_error()의 대안: mssql_get_last_message( )

SQL Server에서 오류 메시지를 검색하려면 다음을 사용하세요. mssql_get_last_message():

$error_message = mssql_get_last_message();

이 함수는 SQL Server 쿼리 실행으로 생성된 마지막 오류 메시지를 검색합니다.

사용 예

이러한 함수를 결합하면 안전하게 삽입할 수 있습니다. SQL Server 테이블에 대한 사용자 입력:

$connection = mssql_connect(...);
$query = 'INSERT INTO sometable (somecolumn) VALUES (' . mssql_escape($user_input) . ')';
$result = mssql_query($query, $connection);

if (!$result) {
    $error_message = mssql_get_last_message(); // Retrieve error message
}

위 내용은 PHP를 사용할 때 SQL Server에서 문자열을 안전하게 이스케이프하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.