Implicazioni sulla sicurezza di impostare il flag di trasmissione su un socket UDP

2

Esistono effetti di sicurezza negativi nell'impostazione dell'opzione SO_BROADCAST in un socket C UDP? Sto scrivendo un programma in C e se ho appena impostato l'opzione di trasmissione su 1, tutti gli indirizzi IP funzionano come previsto, ma se non lo imposto, solo gli indirizzi IP unicast o multicast saranno accettati dal kernel.

    
posta user 27.02.2018 - 21:41
fonte

1 risposta

0

Per quanto ne so, l'invio di trasmissioni tramite protocollo UDP è normale. Quindi, non c'è problema nell'usare SO_BROADCAST in setsockopt(2) .

Disclaimer : l'unica cosa di cui DOVREBBE essere a conoscenza è il piccolo cambiamento di optval (in setsockopt(2) ) tra Linux e l'ambiente Solaris / sunOS.

esempio di codice snippet:

  static int fd = -1;
/* Use the SVR4 macros to distinguish between Solaris and SunOS */
#if defined(sun) || defined(__sun) || defined(__SVR4) || defined(__svr4__)
/* Solaris || SunOS */
  char on = '1';
#else /* defined(__linux__) */
  uint32_t on = 1;
#endif
  if ((fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP))== -1)
  {
#ifndef NDEBUG
    dbg_err_fputs("Cannot open datagram: \"%s\"", strerror(errno));
#else
    dbg_err_fputs("Cannot open datagram");
#endif
  }


#ifdef SO_BROADCAST
  if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) == -1)
  {
#ifndef NDEBUG
    dbg_err_fputs("Cannot set brodcast flag in socket optname: \"%s\"", strerror(errno));
#else
    dbg_err_fputs("Cannot set broadcast flag in socket optname");
#endif
  }
#endif /* SO_BROADCAST */

Se la tua piattaforma di sviluppo è un Solaris / sunOS, dovrai aggiungere alcuni flag alla fine del comando durante la compilazione: -lnsl -lsocket . A seconda della versione di Solaris / SunOS, il socket funzionerà solo se si aggiunge il flag -lxnet ... Se l'errore persiste: -lresolv .

    
risposta data 11.08.2018 - 12:47
fonte

Leggi altre domande sui tag