[OFF] SEGURAN?A NA APLICA?ÃO .NET

CLEVERTON 29/05/2015 15:59:21
#447185
Pessoal, ultimamente tenho lido uns tópicos aqui falando sobre a segurança da informação e do código em .NET.

Agora deixo essas perguntas:

1 - Alguém passa a informação a informação para o banco de dados através de parâmetros. Afim de não informar quais campos existe no banco de dados ?

2 - Alguém aqui autentica o usuário do banco de dados na tela de login do executável ou já deixa dentro do código ou arquivo texto / registro ?

3 - Alguém usa embaralhador de código ?

4 - Alguém cria uma conta de usuário no sistema operacional autenticando através de certificado digital ( proteção contra cópias e acessos não autorizados ) para proteger a integridade dos arquivos fontes do executável ?

5 - Alguém aqui cria regras de negócio e validação dentro do próprio banco de dados, afim de evitar, que esteja exposto no código fonte ?

Quero saber de que forma as pessoas tentam proteger a Integridade de sua aplicação e dados.

Seria interessante alguém deixar Links de programas embaralhadores FREE de códigos .NET.

Fico na expectativa de debatermos esses itens ou demais que vierem aparecer. Falou
KURTGU 29/05/2015 16:17:53
#447188
Meu sistema eu gero uma arquivo que meu sistema le de dentro de um pendrive registrado com as informacoes da empresa, vendo o sistema juntamente com o pendrive o sistema somente funciona com o pendrive....

questao de conexao a maioria e local, entao a seguranca fica presa nisso.


Para embaralhar o codigo ultilizo o http://www.red-gate.com/dynamic/products/dotnet-development/smartassembly/download
XLEGENDARY 29/05/2015 17:03:09
#447194
A pior coisa do mundo é vc ler um código sem parametros, todo embaralhado. As vezes coisas que faz-se com 10 linhas de código a maioria digita 100( e ainda da erro).
é um tal de quebrar linha sem necessidade e de concatenar textboxs que da até medo.

o que custa usar parametros? NADA, pelo contrário é seguro e organizado mas ai fica um monte de [Ô]&[Ô] e [Ô]+[Ô] que eu fico doido

Sei que a maioria são ótimos programadores, mas por favor boas práticas é sempre bem vindo, mesmo que esse código seja escrito somente pra você

obfuscador
http://en.wikipedia.org/wiki/List_of_obfuscators_for_.NET
aqui tem uma lista com eles e suas releases.

é primordial (essencial mesmo) que embaralhemos nossos códigos
o sistema pode até ser do cliente mas o código amigo, é nosso


KERPLUNK 29/05/2015 18:49:35
#447199
Eu acho que se deve ir ainda além disso. Simplesmente parametrizar comandos SQL ainda é muito pouco. Tratamento de exceções, blocos [Ô]using[Ô], herança de classes, todas essas coisas soam para a maioria como [Ô]bonitinho, mas trabalhoso demais para ser usado na prática[Ô]. Para esses digo, você está redondamente enganado. O uso de boas práticas, não é para deixar seu código [Ô]bonitinho[Ô], mas sim para facilitar sua vida. Acredite, com o correto uso de boas práticas, você evita muitas dores de cabeça futuras. Elas existem para lhe beneficiar, não são enfeite, são muito necessárias. Um simples exemplo, seria uma biblioteca CRUD para seu projeto muito bem feita. À partir dela, você pode criar tanto uma aplicação Desktop, quanto uma aplicação Web ou uma WebAPI, ou até mesmo as três coisas, se quiser. Separar a aplicação em camadas e partes, faz com que ela fique mais robusta, mais adaptável para qualquer situação futura que você possa ter que enfrentar. é o caso de muitos, que possuem uma aplicação funcional, mas somente Desktop. Então vem um cliente e pede para que se faça integração com uma rede social e aí ferrou, você vai ter que rebolar um bocado para fazer funcionar mas vai ficar sempre meia boca. Já se sua aplicação estiver bem estruturada, você não terá o menor problema para isso, criando um cliente novo e mais [Ô]courinho de rato[Ô] na carteira. Respondendo suas perguntas:
1 - Se usa parametrização não para [Ô]esconder[Ô] os campos, mas para evitar ataques como de SQL Injection por exemplo.
2 - A autenticação do usuário é bastante relativa, depende muito do caso e até mesmo da preferência. No meu caso, raramente tenho trabalhado com aplicações desktop, então é indiferente para mim, já que o acesso externo é bastante limitado.
3 - Embaralhador de código, ou ofuscador, dificulta a ação de espertinhos, mas não evita. Essa é mais uma das vulnerabilidades de aplicações Desktop.
4 - Não vejo a menor necessidade disso, mesmo para aplicações Desktop. Como disse, se usar as boas práticas de maneira correta, é menos dor de cabeça.
5 - Existem casos em que se colocam regras de negócio dentro do banco, depende de como você estruturou sua aplicação.

Vejo que seu maior medo é o usuário espertinho que descompila seu código e descobre seus segredos. Bem, se esse for seu medo, sugiro que comece a pensar em aplicações Web ao invés de Desktop.
XLEGENDARY 29/05/2015 20:44:24
#447205
Kerplunk, eu vivo dizendo pras pessoas usarem parametros, sou tão acostumado com boas práticas de programação que eu não consigo nem ler códigos bagunçados.
eu evito até de ler pq pra mim me parece uma linguagem diferente. E isso se torna ainda pior em c# por causa das {} ; e seus [Ô]derivados[Ô].
Uma outra coisa que muito programador faz é quebra de linha sem necessidade, ai o código fica gigantesco e quando falta um [Ô]{[Ô] ele nem sabe onde é( não no caso do VS que avisa ) e ai ficam pedindo ajuda pq não programa da maneira correta.




CLEVERTON 30/05/2015 12:27:38
#447213
kerplunk

Vc fala bastante sobre web, mas seus aplicativos web se comunicam com alguma porta fisica do computador ?

Quando perguntei sobre parâmetros afim de esconder campos já, claro que deve haver um proposito de segurança ao esconder algo.
Na verdade quando vou inserir, atualizar, deletar quem cria o comando SQL é o componente que criei.
nunca escrevo uma só linha SQL para qualquer um desses fins.

Sobre isso que vc falou sobre a Injeção SQL, eu notei que agora é recomendado em PHP é o uso da classe MySQLi _funcao
estive lendo que a MySQL_funcao está obsoleta a este tipo de ataque.

Outra coisa que está agregado a este tipo de situação ( Injeção ) é a autenticação.
Repito, se o nome do usuário e senha está informado dentro da string de conexão é uma prática errada.
está mais propicio a este tipo de ataque.

O que eu proponho é pegar estes quesitos e fazermos testes e verifica onde pode ser melhorado.



CLEVERTON 30/05/2015 12:44:46
#447214
KURTGU

Vc entra o sistema com um pendrive, mas como falei, aplicativos em .NET, de forma é feita a descompilação. o pendrive adianta muito ?

vc já pensou na possibilidade que o banco de dados poderia lhe passar uma instrução ou chamada para realizar a abertura do aplicativo ?
porque imagine, mesmo ele sendo descompilado, a instrução vinda do DB não seria tão fácilmente descoberta. principalmente se ela estivesse onlne.
KERPLUNK 30/05/2015 22:42:08
#447223
Sim, aplicações web podem se comunicar com portas locais, mas nesse caso é necessária uma DLL/OCX local para fazer isso. Alguns bancos em suas aplicações web fazem uso dessa técnica, como o banco Itaú por exemplo. Existe uma DLL/OCX local que libera acesso à o que você quiser, leitores de biométricos, impressoras fiscais/não fiscais ou qualquer outro que seja necessário. Vários fabricantes de equipamento já fornecem esse componente pronta, como a Bematech por exemplo. Aplicações web não perdem em absolutamente nada para aplicações desktop, nem mesmo nesse tipo de funcionalidade.
WEVERSON 01/06/2015 00:14:51
#447238
Resposta escolhida
Citação:

KERPLUNK

Uma coisa a ser considerada é: Em se tratando de TI/sistemas, não existe absolutamente nada 100% seguro e isso é FATO. Para cada pessoa pensando em segurança, tem pelo menos 20 pensando em como burlar. Falhas de segurança existem até mesmo em VB6, veja por exemplo o grande número de pessoas aqui no fórum mesmo, que ainda utiliza concatenação de strings para formar um comando SQL. Isso é uma brecha enorme de segurança, para SQL Injection, um usuário um pouco mais espertinho consegue isso sem muitos problemas. Também vejo muitos casos de pessoas que [Ô]abrem[Ô] o banco de dados e conectam via ADO por LAN e até mesmo por internet. Isso é outra falha colossal de segurança. WebAPI, como já mencionei, é o método usado para integração pelos maiores provedores de serviço da internet. Ele possui falhas de segurança? Bem, sim, se mal implementado pode ser uma faca de dois gumes. Existe como prevenir isso? Sem dúvida! E informação para isso é o que não falta aqui na internet. Existem milhares, literalmente milhares de vídeos, artigos, fora(plural de Fórum), blogs, apostilas, enfim uma infinidade de informação sobre isso. Como é uma coisa muito mais conceitual do que necessariamente prática, as pessoas têm dificuldade de entender e se não tem nenhuma experiência com isso acaba desistindo na [Ô]sopa de letrinhas[Ô] que acaba se tornando.




Eu Concordo......
CLEVERTON 03/06/2015 20:52:49
#447374
Segue algumas dúvidas.

1 - se eu criar uma DLL em C# .NET ela também pode ser descompilada ? ela vira MSIL ? C#

2 - Se eu criar uma DLL em VB6 ela pode ser chamada de qual forma no .NET ? C#
A Dll em VB6 ainda vai depender do MSVBM60.dll ?
CLEVERTON 03/06/2015 21:00:56
#447377
http://www.linhadecodigo.com.br/artigo/135/o-processo-de-compilacao-no-csharp.aspx

Será que uma Dll Criada em VB6 e usada em .NET só para troca de strings vai parar de funcionar com o Windows 10 ?
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas