sabato 5 aprile 2025

Software gratuito per il backup dei dati sul sistema operativo Windows Hasleo Backup Suite Free

 


Un software gratuito per la gestione dei backup per il sistema operativo Windows.

Il programma Hasleo Backup Suite Free, scaricabile qui https://www.easyuefi.com/backup-software/backup-suite-free.html è un programma gratuito per effettuare i backup dei dati sul sistema operativo Windows.

Il sito è in lingua inglese.

venerdì 4 aprile 2025

Entity Framework una situazione reale di SQL injection

Entity framework sql injection

In questo articolo, vedremo un possibile caso di come tramite istruzione SQL, possiamo eseguire istruzioni SQL per compiere azioni malevoli, in particolare la cancellazione di una tabella.
L'esempio di codice dell'articolo, oltre al database SQL Serve e linguaggio di programmazione C#, utilizza Entity Framework, per la gestione dei dati.
L'esempio si basa su un'applicazione di tipo Windows Application, ma può si può realizzare anche in un progetto di tipo Web.

Il Database

In questo esempio utilizzeremo un database esistente (denominato Dati), con una tabella esistente chiamata "Anagrafica" con i campi IdAngrafica, nome e Cognome , dove idAnagrafica è il campo chiave contatore.

Si crea una nuova tabella, denominata "Test", con i campi "IDTest" di tipo contatore, Nome e Cognome, di tipo varchar, il tutto come mostrato in figura 1.

Entity framework sql injection

Figura 1 - La tabella che sarà eliminata.

Questa tabella, sarà quella che tramite istruzione SQL injection, ossia istruzione malintenzionata, porterà alla cancellazione della tabella "Test".

Si crea una Stored Procedure, che rileva i dati dalla tabella Anagrafica, questa StoredProcedure, accetta un parametro, questo parametro, sarà utilizzato per inviare istruzione SQL di tipo "Drop", per eliminare la tabella "Test".

Di seguito si riporta la Stored Procedure che esegue la selezione dei record.

CREATE PROCEDURE [dbo].[GetAnagrafica]

        @nome varchar(50)

AS

BEGIN

       -- SET NOCOUNT ON added to prevent extra result sets from

       -- interfering with SELECT statements.

       SET NOCOUNT ON;

 

    -- Insert statements for procedure here

       SELECT * from Anagrafica where Nome = @nome

END

GO




La stored Procedure, effettua un filtro per la colonne nome.


Stesura del codice

Terminata la predisposizione della base dati, non resta che scrivere il codice per per eseguire tramite Entity Framework Core la stored Procedure.
Dopo aver aggiunto i riferimenti Entity Framework Core, mappato la base dati, in un evento click, oppure in una funzione o dove si desidera, tramite il metodo "FromSqlRaw" dell'entità eseguiamo la stored procedure passando oltre il parametro anche l'istruzione Drop.


Di seguito si riporta il frammento di codice delle suddette operazioni.

C#

DatiContext dati = new DatiContext();

string nome = "Luigi;drop table test--";

var datiSP = dati.Anagraficas.FromSqlRaw($"EXECUTE GetAnagrafica {nome}").ToList();


Come si è visto dalla precedente riga di codice, oltre al valore di ricerca che viene passato, viene aggiunta l'istruzione Drop della tabella test, con la conseguenza che viene cancellata, come riportato nel SQL Server Profiler qui di seguito.

Entity framework sql injection


Figura 2 - Le varie attività di Sql Server, tra cui la cancellazione della tabella


Apriamo il database Sql Server, come da figura qui di seguito, la tabella è stata cancellata.

Entity framework sql injection


Figura 3 - La tabella test non esiste più


Una delle varie tecniche per evitare ciò, è quella di utilizzare il metodo "FromSql", che evita queste situazioni.


Conclusioni

L'articolo ha voluto fornire un esempio di scenario reale in cui si potrebbe verificare una situazione di sql injection, ossia, esecuzioni di istruzioni SQL per compiere azioni particolari e di proprio interesse su una base dati.
Per questo è importante realizzare applicazioni con particolare attenzione alla sicurezza, soprattutto quelle in ambito web, che tramite parametri passati alle Stored Procedure, possono eseguire codice malintenzionato. 

Software gitahead per la gestione del codice sorgente con GIT

 



Se cercate un software multipiattaforma e con interfaccia grafica, gitahead è un software gratuito per la gestione del codice sorgente del repository GIT, che offre interessanti funzionalità.

Il programma è gratuito e per diversi sistemi operativi.

Per maggiori informazioni e download visitate il seguente sito https://gitahead.github.io/gitahead.com/

giovedì 3 aprile 2025

Generatore di codice .Net con l'intelligenza artificiale

 

generatore codice .Net

Un sito che fornisce una funzionalità molto interessante ma soprattutto che facilità lo sviluppo software.

Parliamo del sito per la generazione del codice .Net, qui https://workik.com/net-code-generator il sito, che indicando ciò che occorre, viene generato del codice .Net nel linguaggio C#.

Il sito è in lingua inglese ma facilmente utilizzabile.

mercoledì 2 aprile 2025

C# classe per gestire i file vcf

Nel caso che dobbiamo gestire i file vcf, file dei contatti di Microsoft Outlook, tramite la creazione di una classe possiamo gestire il singolo contatto oppure tutti i file presenti in una cartella, il tutto nel linguaggio di programmazione C#.


Di seguito si riporta il frammento di codice della classe per la gestione dei file vcf.

C#

public class ContattiVcf

    {

        public string Nome { get; set; }

        public string Email { get; set; }

        public string Note { get; set; }

        public   ContattiVcf(string percorsoNomeFile)

        {

            string[] lines = File.ReadAllLines(percorsoNomeFile);

            if (lines.Length >= 4)

            {

                Nome = lines.Where(p => p.Contains("FN:")).FirstOrDefault();

                Nome = Nome?.Replace("FN:", "");

                Email = lines.Where(p => p.Contains("EMAIL;PREF;INTERNET:")).FirstOrDefault();

                Email =  Email?.Replace("EMAIL;PREF;INTERNET:", "") ;

                Note = lines.Where(p => p.Contains("NOTE;ENCODING=QUOTED-PRINTABLE:")).FirstOrDefault();

                Note = Note?.Replace("NOTE;ENCODING=QUOTED-PRINTABLE:", "");

            }

        }

         public List<ContattiVcf> Contatti(string percorsoFilesVcf)

        {

             List<ContattiVcf> returnContatti = new List<ContattiVcf>();

            try

            {

                 foreach (string fileVcs in Directory.EnumerateFiles(percorsoFilesVcf))

                {

                     ContattiVcf contatto = new ContattiVcf(fileVcs);

                    returnContatti.Add(contatto);

                 }

 

            }

            catch (Exception ex)

            {

                 returnContatti = null;

            }

             return returnContatti;

         }

    }



Di seguito si riporta un frammento di codice di utilizzo.

C#

string percorso = @"C:\Downloads\contatti\contatti\Nomefile.vcf";

                string soloPercorso = @"C:\Downloads\contatti\contatti\";

                ContattiVcf contatto = new ContattiVcf(percorso);

                Console.Write(contatto.Nome);

                var Contatti = contatto.Contatti(soloPercorso);




martedì 1 aprile 2025

TypeScript convertire un valore string in numerico con decimali

Tramite la funzione parseFloat, nel linguaggio di programmazione TypeScript, possiamo convertire un valore di tipo string, in un numerico con decimali.
Di seguito si riporta un esempio di codice della funzione parseFloat.

TypeScript:

    let   valore = parseFloat('1200');

    console.log(valore); // Restituisce 1200

    let valoreStringa = '1200.87';

    console.log(valoreStringa); // Restituisce 1200.87

 


C# .Net gaming componenti gratuiti per la creazione di video giochi

Una lista di alcuni componenti gratuiti da utilizzare con nel linguaggio di programmazione C# per la creazione di video giochi.


La lista qui di seguito permettono di gestire i vari aspetti della creazione di video giochi tramite il linguaggio di programmazione C# o tecnologia Asp.Net .





Sampsharp  - SampSharp

lunedì 31 marzo 2025

microsoft edge non si avvia come risolvere

Può capitare che il browser per via di alcuni aggiornamenti o per apertura di un sito che ha creato un malfunzionamento, il browser di navigazione Microsoft Edge non si avvia più.
Per risolvere il problema, occorre andare nel percorso "C:\Users\NomeUtete\AppData\Local\Microsoft\Edge\User Data" dove "NomeUtente" è il nominativo con cui si è fatto il login sul pc, e rinominare il file "Local State" in "Local State_old", oppure cancellare tale file.
Per aprire tale percorso, possiamo farlo aprendo il programma "Esplora file" ed inserendo nella barra di navigazione il seguente percorso %LocalAppData%\Microsoft\Edge\User Data\  in modo che viene aperto tale percorso.


TypeScript fare override di un tipo che ereditiamo

In questo esempio di codice nel linguaggio di programmazione TypeScript, vediamo come estendere un tipo da altro tipo, e cambiare la proprietà che si sta ereditando dal tipo number a string.


TypeScript

type eta = {

  anni: number;

 

}

 

type persona = Omit<eta, 'anni'> & {

 

  anni: string;

 

}

 

Come si è visto dal precedente esempio, tramite la parola chiave Omit, abbiamo cambiato il tipo di propreità.


Di seguito si riporta l'utilizzo.


TypeScript

let persona: persona = {

   anni: '2'

 

 }

domenica 30 marzo 2025

C# esportare i contatti di Microsoft Outlook in un file xml con .Net 9

In questo esempio di codice nel linguaggio di programmazione C#, vedremo come esportare i contatti di Microsoft Outlook in un file XML, con l'ultima versione del .Net 9.

Dopo aver aggiunto al progetto il riferimento COM a Microsoft Outlook 16.0 Object Library ,  si ha la possibilità di utilizzare le classi per gestire i contatti del programma di posta elettronica più conosciuto al mondo.


Aggiungiamo il riferimento allo spazio dei nomi per Microsoft Outlook, qui di seguito si riporta il frammento di codice di tale dichiarazione.


using Microsoft.Office.Interop.Outlook;


Tramite le classi di Outlook, dopo aver letto la cartella dei contatti, usiamo le classi per la gestione dei file XML, per creare un file XML con tutti i contatti della rubrica di Microsoft Outlook. 
Di seguito si riporta il frammento di codice delle suddette operazioni, in un evento click di un pulsante.


private void BtnOutlookXML_Click(object sender, EventArgs e)

 {

     try

     {

 

 

         Microsoft.Office.Interop.Outlook.Application outlookApp = new Microsoft.Office.Interop.Outlook.Application();

         NameSpace outlookNamespace = outlookApp.GetNamespace("MAPI");

         MAPIFolder contattiTrovati = outlookNamespace.GetDefaultFolder(OlDefaultFolders.olFolderContacts);

 

         using (XmlWriter writerStream = XmlWriter.Create(@"C:\Varie\Contatti.xml"))

         {

             writerStream.WriteStartDocument();

             writerStream.WriteStartElement("Contatti");

 

             foreach (ContactItem contatto in contattiTrovati.Items)

             {

                 if (contatto is ContactItem)

                 {

                     writerStream.WriteStartElement("Contatto");

 

                     writerStream.WriteElementString("Nome", contatto.FirstName ?? "");

                     writerStream.WriteElementString("Cognome", contatto.LastName ?? "");

                     writerStream.WriteElementString("Email", contatto.Email1Address ?? "");

                     writerStream.WriteElementString("Note", contatto.Body ?? "");

                     writerStream.WriteEndElement();

                 }

             }

 

             writerStream.WriteEndElement();

             writerStream.WriteEndDocument();

         }

 

         Console.WriteLine("Contatti esportati in formato XML.");

     }

     catch (System.Exception ex)

     {

         MessageBox.Show(ex.Message);

     }

 }

 


















Software gratuito per il recupero dei dati Hasleo Data Recovery For Windows

 

Hasleo Data Recovery

Il programma Hasleo Data Recovery, è un software con una versione gratuita ed una a pagamento, per il recupero dei dati in caso di cancellazione, attacco virus o altro per il sistema operativo Windows.

La versione gratuita permette un recupero dei dati fino a 2 gb.

Per maggiori informazioni ed altro visitate il sito in lingua inglese qui https://www.easyuefi.com/data-recovery/free-data-recovery.html