Quelle dieser GPT-Sicherheits-Best Practices: Suchen Sie nach Updates, bevor Sie diese Tipps verwenden, wenn es geforkt ist!
Als Enthusiast von KI-Sprachmodellen bin ich oft beunruhigt über die Art und Weise, wie in verschiedenen Anwendungen mit vertraulichen Daten umgegangen wird. Während die Aufregung um GPT verständlich ist, stellt der unsachgemäße Umgang mit sensiblen Informationen Administratoren und Sicherheitsexperten, die von Kunden gemietete Server verwalten, vor große Herausforderungen. Ziel dieses Dokuments ist es, Best Practices für die sichere Implementierung von GPT in Webanwendungen bereitzustellen, um Sicherheitslücken vorzubeugen und sensible Daten zu schützen.
Der Zweck dieses Dokuments besteht darin, die Sicherheitsrisiken und Schwachstellen zu skizzieren, die bei der Implementierung von GPT in Webanwendungen auftreten können, und Best Practices zur Minderung dieser Risiken bereitzustellen.
<?php
$ api_key = " your_api_key_here " ;
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
Frontend (JavaScript mit jQuery)
function sendRequest ( inputText ) {
$ . ajax ( {
url : 'backend.php' ,
type : 'POST' ,
data : { input : inputText } ,
success : function ( response ) {
// Process and display the response from GPT
} ,
error : function ( ) {
// Handle error cases
}
} ) ;
}
Backend (PHP)
<?php
$ api_key = " your_api_key_here " ;
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
$ inputText = $ _POST [ ' input ' ];
// Process the input and send a request to GPT
// Return the response to the front-end
Sie können Ihren API-Schlüssel als Umgebungsvariable speichern, indem Sie ihn zur Umgebungskonfiguration Ihres Servers hinzufügen oder eine .env-Datei verwenden (mit Hilfe einer Bibliothek wie PHP dotenv).
Erstellen Sie eine .env-Datei im Stammverzeichnis Ihres Projekts:
GPT_API_KEY=your_api_key_here
Installieren Sie das Paket vlucas/phpdotenv mit Composer:
composer require vlucas/phpdotenv
Laden Sie die Umgebungsvariablen aus der .env-Datei in Ihr PHP-Skript:
<?php
require_once ' vendor/autoload.php ' ;
use Dotenv Dotenv ;
$ dotenv = Dotenv:: createImmutable ( __DIR__ );
$ dotenv -> load ();
Greifen Sie über die Umgebungsvariablen auf den API-Schlüssel zu:
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/engines/davinci-codex/completions " ;
Durch die Verwendung von Umgebungsvariablen wird Ihr API-Schlüssel sicher aufbewahrt und von Ihrem Quellcode getrennt. Denken Sie daran, die .env-Datei zu Ihrer .gitignore-Datei hinzuzufügen, um zu verhindern, dass sie versehentlich in Ihr öffentliches Repository übertragen wird.
Backend (PHP)
<?php
// Sanitize user input before processing
$ inputText = filter_input ( INPUT_POST , ' input ' , FILTER_SANITIZE_STRING );
Verwenden Sie HTTPS für eine sichere Kommunikation. Stellen Sie bei der Bereitstellung Ihrer Webanwendung sicher, dass Sie HTTPS verwenden, um die Kommunikation zwischen dem Client und dem Server zu verschlüsseln und so Man-in-the-Middle-Angriffe zu verhindern.
API-Anfragerate begrenzen Um den Missbrauch Ihres GPT-API-Schlüssels zu verhindern und die Kosten zu kontrollieren, implementieren Sie eine Ratenbegrenzung in Ihrem serverseitigen Code. Dadurch wird die Anzahl der Anfragen begrenzt, die innerhalb eines bestimmten Zeitraums an die GPT-API gestellt werden.
Backend (PHP)
<?php
// Implement rate-limiting logic here
// ...
// Only proceed with the request if the rate limit is not exceeded
if ( $ is_rate_limit_ok ) {
// Send a request to GPT API
}
Verwenden Sie Content Security Policy (CSP). Implementieren Sie CSP-Header, um XSS-Angriffe und andere Schwachstellen zu verhindern, indem Sie die Ressourcen steuern, die der Benutzeragent für eine bestimmte Seite laden darf.
Verwenden Sie Sicherheitsheader. Implementieren Sie Sicherheitsheader wie X-Frame-Options, X-Content-Type-Options und andere, um Ihre Anwendung vor häufigen Sicherheitslücken zu schützen.
Bei der Implementierung von GPT ist es entscheidend, den geeigneten API-Endpunkt basierend auf Ihrem spezifischen Anwendungsfall auszuwählen. OpenAI stellt verschiedene Endpunkte für unterschiedliche Zwecke bereit. Hier sind die aktuellen OpenAI-Endpunkte:
ENDPUNKT | MODELLNAME |
---|---|
/v1/chat/completions | gpt-4, gpt-4-0314, gpt-4-0613, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301, gpt-3.5-turbo- 0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613. |
/v1/completions | ada, ada-code-search-code, ada-code-search-text, ada-search-document, ada-search-query, ada-similarity, babbage, ada-code-search-code, ada-code-search- Text, Babbage-Suchdokument, Babbage-Suchabfrage, Babbage-Ähnlichkeit, Code-Davinci-Edit-001, Code-Suche-ada-Code-001, Code-Suche-ada-Text-001, Code-Suche-Babbage-Code-001, Code-Suche-Babbage-Text-001, Curie, Curie-Instruct-Beta, Curie- Suchdokument, Curie-Suchanfrage, Curie-Ähnlichkeit, Davinci, Davinci-Instruct-Beta, Davinci-Suchdokument, davinci-search-query, davinci-similarity, text-ada-001, text-babbage-001, text-curie-001, text-davinci-001, text-davinci-002, text-davinci-003, text-davinci- edit-001, text-embedding-ada-002, text-search-ada-doc-001, text-search-ada-query-001, text-search-babbage-doc-001, text-search-babbage-query-001, text-search-curie-doc-001, text-search-curie-query-001, text-search-davinci-doc-001, text-search-davinci-query-001, text-similarity-ada-001, text-similarity-babbage-001, text-similarity-curie-001, text-similarity-davinci-001 |
/v1/edits | text-davinci-edit-001, code-davinci-edit-001 |
/v1/audio/transcriptions | Flüstern-1 |
/v1/audio/translations | Flüstern-1 |
/v1/fine-tunes | davinci, curie, babbage, ada |
/v1/embeddings | text-embedding-ada-002, text-search-ada-doc-001, text-search-ada-query-001, text-search-babbage-doc-001, text-search-babbage-query-001, text- search-curie-doc-001, text-search-curie-query-001, text-search-davinci-doc-001, text-search-davinci-query-001 |
/v1/moderations | text-moderation-latest, text-moderation-stable |
Verschiedene Endpunkte haben unterschiedliche Kosten pro Token oder pro Anfrage. Wählen Sie einen Endpunkt, der in Ihr Budget passt.
Einige Endpunkte bieten schnellere Reaktionszeiten, während andere eher für anspruchsvolle Aufgaben geeignet sind. Berücksichtigen Sie bei der Auswahl eines Endpunkts die Leistungsanforderungen Ihrer Anwendung.
Jeder Endpunkt hat seine eigenen Stärken und Schwächen. Bewerten Sie die individuellen Anforderungen Ihrer Anwendung und wählen Sie den Endpunkt aus, der diese Anforderungen am besten erfüllt.
Ein Beispiel für die Verwendung des Endpunkts /v1/chat/completions mit dem gpt-3.5-turbo-Modell in einer Webanwendung.
Aktualisieren Sie $request_url in Ihrem Back-End-PHP-Skript:
<?php
$ api_key = getenv ( ' GPT_API_KEY ' );
$ request_url = " https://api.openai.com/v1/chat/completions " ;
Erstellen Sie eine Funktion, um eine Anfrage an die GPT-API zu senden:
<?php
function send_chat_completion_request ( $ api_key , $ request_url , $ messages ) {
$ ch = curl_init ();
$ data = array (
' model ' => ' gpt-3.5-turbo ' ,
' messages ' => $ messages
);
curl_setopt ( $ ch , CURLOPT_URL , $ request_url );
curl_setopt ( $ ch , CURLOPT_POST , 1 );
curl_setopt ( $ ch , CURLOPT_POSTFIELDS , json_encode ( $ data ));
curl_setopt ( $ ch , CURLOPT_RETURNTRANSFER , true );
curl_setopt ( $ ch , CURLOPT_HTTPHEADER , array (
" Content-Type: application/json " ,
" Authorization: Bearer $ api_key "
));
$ response = curl_exec ( $ ch );
$ httpcode = curl_getinfo ( $ ch , CURLINFO_HTTP_CODE );
curl_close ( $ ch );
return array ( ' response ' => $ response , ' httpcode ' => $ httpcode );
}
Rufen Sie die Funktion send_chat_completion_request() auf und verarbeiten Sie die GPT-API-Antwort:
<?php
$ inputText = filter_input ( INPUT_POST , ' input ' , FILTER_SANITIZE_STRING );
$ messages = array (
array ( ' role ' => ' system ' , ' content ' => ' You are talking to a helpful assistant. ' ),
array ( ' role ' => ' user ' , ' content ' => $ inputText )
);
$ result = send_chat_completion_request ( $ api_key , $ request_url , $ messages );
if ( $ result [ ' httpcode ' ] == 200 ) {
$ json_response = json_decode ( $ result [ ' response ' ], true );
$ assistant_reply = $ json_response [ ' choices ' ][ 0 ][ ' message ' ][ ' content ' ];
// Return the response to the front-end
echo $ assistant_reply ;
} else {
// Handle error cases
echo " Error: " . $ result [ ' response ' ];
}
Dieses Beispiel zeigt, wie der Endpunkt /v1/chat/completions mit dem gpt-3.5-turbo-Modell verwendet wird. Die Funktion send_chat_completion_request() sendet eine Anfrage mit dem Eingabetext an die API und empfängt die generierte Antwort. Die Antwort des Assistenten wird dann an das Frontend zurückgegeben.
Zusätzliche Ressourcen und Hinweise, die für das Verständnis und die Umsetzung der in diesem Dokument genannten Best Practices hilfreich sein können.
S. Volkan Kücükbudak
Wenn Sie dieses Projekt nützlich finden und es unterstützen möchten, gibt es mehrere Möglichkeiten, dies zu tun:
Vielen Dank für Ihre Unterstützung! ❤️