Sicurezza e intelligenza artificiale responsabile per lo sviluppo di Windows

Gli strumenti di intelligenza artificiale possono accelerare notevolmente Windows sviluppo di app, ma la velocità non rimuove la responsabilità. Il codice generato dall'agente di intelligenza artificiale è il codice fornito e si è responsabili di tutti gli elementi dell'app indipendentemente dal modo in cui è stato scritto.

Questa pagina illustra due argomenti correlati: procedure responsabili per l'uso degli strumenti di intelligenza artificiale per creare app e problemi di sicurezza specifici del codice generato dall'intelligenza artificiale.

Si è proprietari del codice

Quando un agente di intelligenza artificiale genera una funzione, un layout o una chiamata API, diventa il codice al momento del commit. Gli stessi standard si applicano se il codice è stato scritto a mano o generato:

  • Leggere e comprendere ogni modifica prima di accettarla
  • Testa il codice generato dall'IA almeno con la stessa accuratezza del codice scritto a mano — i modelli possono generare codice dall'aspetto plausibile ma sottilmente errato
  • Non usare "l'intelligenza artificiale l'ha scritta" come spiegazione di un bug o di un problema di sicurezza nell'ambiente di produzione

Gli strumenti di intelligenza artificiale non rimuovono la necessità di rivedere il codice. Cambiano ciò che stai esaminando, non il fatto che tu lo esamini.

Cosa non inviare agli strumenti di intelligenza artificiale

Sii ponderato su ciò che includi nei prompt e nelle finestre di contesto:

  • Segreti e credenziali : non incollare mai chiavi API, password o stringhe di connessione in un prompt. Anche in una sessione di chat privata, le credenziali nelle richieste rappresentano un rischio per la sicurezza e possono essere visualizzate nei log. Vedere Le credenziali e la gestione dei segreti di seguito.
  • Dati dei clienti e informazioni personali : non usare nomi reali dei clienti, messaggi di posta elettronica o dati di utilizzo come input di esempio, anche per spiegare un bug. Usare dati sintetici.
  • Logica di business proprietaria : comprendere i criteri dell'organizzazione sul codice sorgente che può essere inviato ai servizi di intelligenza artificiale esterni prima di condividere il codice dei sistemi interni.

Convalida dell'input

L'intelligenza artificiale tende a generare una gestione degli input permissiva. Convalidare sempre lunghezze, tipi e intervalli prima di agire sull'input dell'utente.

  • Non passare mai valori non elaborati TextBox.Text ai comandi della shell, ai percorsi di file o alle query di database.
  • Convalidare le lunghezze delle stringhe prima di scrivere nell'archiviazione o inviarle in rete.
  • Usare un approccio allow-list per i percorsi di file: verificare che i percorsi risolti rimangano all'interno delle directory previste.

Aggiungere questa opzione al prompt: "Aggiungere limiti di convalida e lunghezza di input a tutti i campi rivolti all'utente".

Gestione delle credenziali e dei segreti

Non codificare mai direttamente nel codice chiavi API, password o stringhe di connessione. L'intelligenza artificiale genera spesso stringhe segnaposto come "your-api-key-here" , trattando questi come bug.

  • Archiviare le credenziali in Windows.Security.Credentials.PasswordVault:

    var vault = new PasswordVault();
    vault.Add(new PasswordCredential("MyApp", username, password));
    
  • Recuperali in fase di esecuzione:

    var credential = vault.Retrieve("MyApp", username);
    credential.RetrievePassword();
    
  • Usare variabili di ambiente o Azure Key Vault per le credenziali del servizio in scenari di integrazione continua o lato server.

Integrità dei pacchetti e delle dipendenze

Esaminare ogni pacchetto NuGet suggerito da un agente di intelligenza artificiale prima di aggiungerlo al progetto.

  • Verificare l'autore in nuget.org, cercare lo scudo blu (Microsoft) o un editore noto.
  • Analizzare le vulnerabilità note:
    dotnet list package --vulnerable
    
  • Preferisce i pacchetti con aggiornamenti recenti e manutenzione attiva.

Funzionalità e autorizzazioni delle app

I file generati dall'intelligenza Package.appxmanifest artificiale spesso includono funzionalità generali. Esaminare la <Capabilities> sezione e rimuovere qualsiasi elemento non necessario per l'app.

Funzionalità comuni su vasta scala da controllare per:

  • broadFileSystemAccess — solo se l'app legge effettivamente percorsi arbitrari del file system
  • documentsLibrary — richiede l'approvazione speciale dello Store; evitare a meno che non sia necessario
  • userAccountInformation — solo se hai bisogno del nome o della foto dell'utente

Elenco di controllo per la revisione del codice

Prima di spedire il codice generato dall'intelligenza artificiale, verificare:

  • Nessun segreto o credenziale codificati in modo statico
  • Input dell'utente convalidato prima dell'uso
  • Percorsi di file controllati rispetto alle directory consentite
  • Funzionalità minime necessarie dichiarate nel manifesto
  • Pacchetti NuGet analizzati per individuare le vulnerabilità (dotnet list package --vulnerable)
  • Dati sensibili archiviati in PasswordVault, non ApplicationData.LocalSettings
  • Tutte le chiamate di rete usano HTTPS
  • I messaggi di eccezione non espongono percorsi interni o analisi dello stack agli utenti

I modelli di intelligenza artificiale hanno conoscenze non aggiornati

Gli strumenti di intelligenza artificiale usati oggi sono stati sottoposti a training sui dati con una data di cutoff. Per lo sviluppo di Windows, questo significa che i modelli hanno visto molti più esempi UWP rispetto agli esempi di WinUI 3, che è esattamente il motivo per cui questa sezione della documentazione esiste.

Non trattare l'output dell'IA come una fonte autorevole per:

  • Nomi API e namespace correnti (verificare con il riferimento API di WinUI 3)
  • Versioni correnti dell'SDK e nomi dei pacchetti
  • Requisiti per l'invio e i criteri dello Store (queste modifiche cambiano di frequente)
  • Linee guida sulla sicurezza (i modelli possono riprodurre modelli di crittografia o autenticazione obsoleti)

Il Microsoft Learn MCP server e il WinUI agent plugin riducono il rischio di informazioni obsolete basando il tuo agente sulla documentazione aggiornata, ma verifica sempre qualsiasi informazione critica per la sicurezza nelle fonti primarie.

Accessibility

L'interfaccia utente generata dall'intelligenza artificiale omette spesso il supporto per l'accessibilità. Un modello addestrato su milioni di esempi XAML riprodurrà la qualità media di tali esempi, e tale qualità media storicamente tende a trascurare AutomationProperties, la navigazione tramite tastiera e un contrasto sufficiente.

Quando si accetta codice XAML o controlli generato dall'intelligenza artificiale:

  • Verificare che gli elementi interattivi abbiano AutomationProperties.AutomationId e AutomationProperties.Name impostati
  • Verificare che l'ordine del focus sia logico: i punti di tabulazione devono seguire l'ordine di lettura
  • Esegui il test con Assistente vocale o un altro strumento di lettura dello schermo prima del rilascio
  • Usare lo strumento Accessibility Insights per Windows per rilevare automaticamente le lacune

Chiedi all'agente in modo esplicito: "Aggiungi proprietà di accessibilità a tutti gli elementi interattivi in questo codice XAML". Non presupporre che sia stato fatto.

Se l'app usa funzionalità di intelligenza artificiale

Se si creano funzionalità di intelligenza artificiale nell'app , non solo usando l'intelligenza artificiale per scrivere l'app, si applicano responsabilità aggiuntive.

Essere trasparenti con gli utenti. Indicare agli utenti:

  • Quali dati l'app invia ai servizi di intelligenza artificiale
  • Se l'IA sta prendendo decisioni che influiscono su di essi
  • Come non partecipare, se appropriato

Mantenete le persone coinvolte per le azioni con conseguenze significative. Non consentire all'intelligenza artificiale di eliminare in modo autonomo i dati, effettuare acquisti, inviare messaggi per conto dell'utente o eseguire altre azioni irreversibili senza conferma esplicita.

Verificare la presenza di pregiudizi e risultati inattesi. I modelli di intelligenza artificiale possono produrre output distorti, offensivi o in realtà errati. Testa le funzionalità di intelligenza artificiale dell'app con input diversi e casi limite prima del rilascio.

Usare gli strumenti di sicurezza del contenuto. Se l'app genera o elabora testo, immagini o altri contenuti con intelligenza artificiale, usa Sicurezza dei contenuti di Azure AI o un filtro equivalente per intercettare output dannosi prima di raggiungere gli utenti.

Licenze e attribuzioni

Gli strumenti di intelligenza artificiale possono generare codice simile al codice open source esistente. Prima di usare il codice generato dall'intelligenza artificiale in un'app commerciale:

Principi di IA responsabile di Microsoft

Microsoft progetta prodotti e funzionalità di intelligenza artificiale guidati da sei principi: equità, affidabilità e sicurezza, privacy e sicurezza, inclusività, trasparenza e responsabilità.

Per altre informazioni , vedere microsoft.com/ai/responsible-ai.