Vorgehensweise: Herstellen einer Verbindung mithilfe der SQL Server-Authentifizierung

SQL Server-Treiber für PHP unterstützt die SQL Server-Authentifizierung zum Herstellen einer Verbindung mit SQL Server.

Die SQL Server-Authentifizierung sollte nur verwendet werden, wenn die Windows-Authentifizierung nicht möglich ist. Weitere Informationen zum Herstellen von Verbindungen mithilfe der Windows-Authentifizierung finden Sie unter Vorgehensweise: Herstellen einer Verbindung mithilfe der Windows-Authentifizierung.

Wenn die SQL Server-Authentifizierung zum Herstellen einer Verbindung mit SQL Server eingesetzt wird, müssen die folgenden Punkte berücksichtigt werden:

  • Auf dem Server muss der gemischte SQL Server-Authentifizierungsmodus aktiviert sein.
  • Beim Versuch, eine Verbindung herzustellen, müssen die Verbindungsattribute UID und PWD festlegt werden. UID und PWD müssen einem gültigen SQL Server-Benutzer bzw. -Kennwort zugeordnet werden.

Hinweis

In Kennwörtern, die eine rechte geschweifte Klammer (}) enthalten, muss dieser Klammer eine zweite rechte geschweifte Klammer als Escapezeichen vorangestellt werden. Wenn das SQL Server-Kennwort beispielsweise "pass}word" lautet, dann muss der Wert des PWD-Verbindungsattributs auf "pass}}word" festgelegt werden.

Wenn die SQL Server-Authentifizierung zum Herstellen einer Verbindung mit SQL Server eingesetzt wird, müssen die folgenden Vorsichtsmaßnahmen ergriffen werden:

  • Schützen (verschlüsseln) Sie die Anmeldeinformationen, die vom Webserver über das Netzwerk an die Datenbank übermittelt werden. SQL Server 2005 und SQL Server 2008 verschlüsseln Anmeldeinformationen standardmäßig. Um die Sicherheit zu erhöhen, legen Sie das Encrypt-Verbindungsattribut auf "on" fest, um alle Daten zu verschlüsseln, die an den Server gesendet werden.

Hinweis

Durch die Festlegung des Encrypt-Verbindungsattribut auf „on“ kann die Leistung beeinträchtigt werden, weil die Datenverschlüsselung mit einem hohen Rechenaufwand verbunden sein kann.

  • Nehmen Sie in PHP-Skripts keine Werte für die Verbindungsattribute UID und PWD in Klartext auf. Diese Werte sollten in einem anwendungsspezifischen Verzeichnis mit entsprechend eingeschränkten Zugriffsberechtigungen gespeichert werden.
  • Verwenden Sie möglichst nicht das sa-Konto. Ordnen Sie die Anwendung einem Datenbankbenutzer zu, der über die erforderlichen Berechtigungen verfügt, und verwenden Sie ein sicheres Kennwort.

Hinweis

Von UID und PWD abgesehen, können die Verbindungsattribute beim Herstellen der Verbindung festgelegt werden. Eine vollständige Liste der unterstützten Verbindungsattribute finden Sie unter sqlsrv_connect.

Beispiel

Im folgenden Beispiel wird die SQL Server-Authentifizierung zum Herstellen einer Verbindung mit einer lokalen Instanz von SQL Server verwendet. Die Werte für die erforderlichen Verbindungsattribute UID und PWD werden aus den anwendungsspezifischen Textdateien uid.txt und pwd.txt aus dem Verzeichnis C:\AppData eingelesen. Nachdem die Verbindung hergestellt wurde, wird der Server abgefragt, um die Benutzeranmeldung zu überprüfen.

Im Beispiel wird davon ausgegangen, dass SQL Server und die AdventureWorks-Datenbank auf dem lokalen Computer installiert sind. Alle Ausgaben werden an den Browser ausgegeben, wenn das Beispiel über den Browser ausgeführt wird.

<?php
/* Specify the server and connection string attributes. */
$serverName = "(local)";

/* Get UID and PWD from application-specific files.  */
$uid = file_get_contents("C:\AppData\uid.txt");
$pwd = file_get_contents("C:\AppData\pwd.txt");
$connectionInfo = array( "UID"=>$uid,
                         "PWD"=>$pwd,
                         "Database"=>"AdventureWorks");

/* Connect using SQL Server Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Unable to connect.</br>";
     die( print_r( sqlsrv_errors(), true));
}

/* Query SQL Server for the login of the user accessing the
database. */
$tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
     echo "Error in executing query.</br>";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve and display the results of the query. */
$row = sqlsrv_fetch_array($stmt);
echo "User login: ".$row[0]."</br>";

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

Siehe auch

Aufgaben

Vorgehensweise: Herstellen einer Verbindung mithilfe der SQL Server-Authentifizierung

Konzepte

Informationen zu den Codebeispielen in der Dokumentation

Weitere Ressourcen

Programmierhinweise
SUSER_SNAME (Transact-SQL)
Vorgehensweise: Erstellen einer SQL Server-Anmeldung
Vorgehensweise: Erstellen eines Datenbankbenutzers
Verwalten von Benutzern, Rollen und Anmeldungen
Trennung von Benutzer und Schema
Erteilen von Objektberechtigungen (Transact-SQL)