SEGURAN?A ASP.NET

NOWLIGHTS 17/11/2017 22:57:27
#477957
Boa noite galera, tenho umas duvidas sobre segurança do asp.net....


Duvida.1:
Deixar ConnectionString no Web.Config, é seguro?

Duvida.2:
Criar uma classe para deixar os dados do cliente para evitar a necessidade de select é seguro? (e boa pratica?)

Duvida.3:
Metodos Private, Public, Public Shared... por ser publico ou privado não tem nada haver com segurança, tem?
KERPLUNK 20/11/2017 09:31:40
#477977
Resposta escolhida
1 - Conexões, objetos de banco de dados e tudo mais, deveria estar completamente separado de UI. Faça uma duas ou quantas DLL[ô]s forem necessárias, mas separe a UI dessa parte de banco de dados. O ideal, é usar um ORM como o Entity Framework. Portanto a connection string, nem sequer deve estar no Web.config.
2 - Sinceramente, não entendi sua pergunta. De uma maneira ou de outra, você vai ter que ir no banco de dados. Aconselho novamente o uso do Entity Framework.
3 - Não.
NOWLIGHTS 20/11/2017 16:06:23
#477996
1. Meus objetos e conexão com banco de dados está esperado da UI, uso um sistema em camadas, PL que é a classe de propriedades, DAL que é a camada que acessa os dados, e BLL que faz todo o acesso e me retorna os dados, vou dar uma olhada nesse ORM certinho!

2. A duvida é a seguinte, onde posso armazenar o ID do cliente logado, pelos videos (asp.net) que vi, a maioria colocava em uma Session, e não parece ser muito seguro.
KERPLUNK 20/11/2017 16:14:39
#477998
Session é uma péssima idéia. Tenho um vídeo onde mostro como fazer isso usando tokens.
JABA 20/11/2017 16:35:05
#477999
Citação:

Duvida.1:
Deixar ConnectionString no Web.Config, é seguro?



social.msdn.microsoft.com/Forums/pt-BR/60b98d0d-340c-4f35-94a9-6486521be26c/connection-string-no-web-config?forum=aspnetpt

Citação:

Duvida.2:
Criar uma classe para deixar os dados do cliente para evitar a necessidade de select é seguro? (e boa pratica?)



A separação da camada lógica (Cliente) da camada de dados (select) não tem a ver com segurança, mas sim com a organização, reutilização e manutenção do seu projeto. Toda essa estruturação é considerada uma boa prática.

Citação:

Duvida.3:
Metodos Private, Public, Public Shared... por ser publico ou privado não tem nada haver com segurança, tem?



Na Orientação a Objetos, isso está ligado mais a uma proteção interna dos dados. Às vezes os objetos fazem coisas que não podem ser publicadas para o mundo externo - o nome dessa técnica se chama encapsulamento. Sendo assim, isso pode comprometer a segurança da informação, como , por exemplo, em contas bancárias, cartão de crédito, etc.
NOWLIGHTS 20/11/2017 17:53:37
#478002
Kerp, e se fosse uma aplicação windows forms, onde poderia armazenar o id do cliente logado?
F001E 20/11/2017 23:16:44
#478008
Citação:

Kerp, e se fosse uma aplicação windows forms, onde poderia armazenar o id do cliente logado?



Foi para o Kerplunk mas vou responder como eu usava quando desenvolvia desktop.

No caso criava uma variável Public ou Global(VB6) e armazenava o id do Cliente quando era logado. Fazia isso também com o id da Empresa quando o software era multi-empresa.
F001E 20/11/2017 23:31:23
#478011
Citação:

Duvida.1:
Deixar ConnectionString no Web.Config, é seguro?



Na WebAPI uso assim: appsettings.json

[Ô]ConnectionStrings[Ô]: {
[Ô]ProductionConnection[Ô]: [Ô]LC17#AoiSiHXFI6Ct3iYY+WhG95nk9+ks+WHBGnMT5rgQo5gLgoCM6FHokk8DNdhf6pj2lsKj32csfLs8lkCZZeE1lA1fX+fVNwlfRr3Ph9Dd2P6asfmPnErogqFaP7HCwXz7VP8rJk4kFzNZJwclglPgC+qzPfH1vTagP/WlH1ylB60=[Ô],
[Ô]TestConnection[Ô]: [Ô]LC17#AoiSiHXFI6Ct3iYY+WhG95nk9+ks+WHBGnMT5rgQo5gLgoCM6FHokk8DNdhf6pj2lsKj32csfLs8lkCZZeE1lA1fX+fVNwlfRr3Ph9Dd2P6asfmPnErogqFaP7HCwXz7VP8rJk4kFzNZJwclglPgC+qzPfH1vTagP/WlH1ylB60=[Ô],
[Ô]DevelopmentConnection[Ô]: {
[Ô]Lc1[Ô]: [Ô]LC17#mGUsEL6DBn2U6Ehmp4qu4GS/OPys0Dj4fBL/y+BcywcJkUPBEfayojXa+ZnNP+eoT5i7jdy8SYLO/ucf5h9Pr1fWlciJcJxM/uOtGSya9A5KNJ8bdkFwEV1oRTwBeE65sAKwIwZF9yB95I9vhn5usMKY6r4YdcAxWnQo0xs6CW09jyH1zWx+O6w4zknfriU0tB4=[Ô], //Base1
[Ô]Lc2[Ô]: [Ô]LC17#PZG4CSaQ+aLWbIajVFYLrn/mvYDNYWMT0OijjaxsKDRxuiMO+wVlsBTuL+k/agasvFTmzjIl/i9Xp4b3draJvtpQHywSED7x/yHSGsPdxDkVI3fiCOIQKGZ8KnCIazy1+5ClNXU8a3uqrT2CTXM50TUa[Ô], //Base2
[Ô]Lc3[Ô]: [Ô]LC17#DF+NPk9mMsOM3stNjET9aY3gbCXSfRTzyLHB0/y+Ql8b2fY1A4NmD8FgGtwaePsCUkms7Wq2JHTHExQt9dmMgcQTW+NWGK4JsP7Af708ie2ZpMw1L1Bh0IHx3edfiwk92ZQvN0DKvQt72tnCTwTdZYg80Ao5PztieqZM[Ô], //Base3
[Ô]Lc4[Ô]: [Ô]LC17#CNlsdnTr2S8b91AhWAbjlZ/7TcdPV1H6jUgtC3REaLehf0va1xEiZX2QBhiBRxMYPoi5inr3s86HcnBvZDHSMG97zPZ9D3v2l/Hx9stYu/Y6PP+dT7DAOthH3HefkX2T72BgeTyLcD1Ptam371qde/vSukKdVAQLtN6jgmlBjBg=[Ô], //Base4
[Ô]Lc5[Ô]: [Ô]LC17#7cL9dRN/Zqnq5pnWJdNcvpq5eRUm6mYOqY4+xcaZ8Z316pk3FPleBIefFSQ0fV6PyGv+6fArEjlAhzT8gm8C7fZVlIDIIASEd94ZDNlk9U2r6KfDj1PttI9EMsWx77gd7rxitRVsDAzcP8GGLlEctmFTE7rSiohfaJJXsPOx[Ô]
}
},


Para criptografar tudo isso, desenvolvi um App em Electron onde uso a propriedade SecurityHelper para ajudar a embaralhar os dados.

[Ô]ApplicationConfig[Ô]: {
[Ô]CompanyAlias[Ô]: [Ô]Amazon[Ô],
[Ô]Environment[Ô]: [Ô]Development[Ô], //(Development, Test, Production)
[Ô]EnvironmentDevActive[Ô]: [Ô]Lc4[Ô], //--> Nome do ambiente dev ativo
//--> Token de acesso das aplicações
[Ô]ApplicationKey[Ô]: [
[Ô]BA3253876AED6BC22D4A6FF53D8406C6AD864195ED144AB5C87621B6C233B548BAEAE6956DF346EC8C17F5EA10F35EE3CBC514797ED7DDD3145464E2A0BAB413[Ô],
[Ô]5AECB1AEBFA79C76C6EAD2E30ACD53902E5334C65F2FC7077BB0CBCF8EE78A9A999DECBFCA48EC24B9BF0B983EECC3C0A7896220D85BDD6E9E64E00232096CB2[Ô]
],
[Ô]SecurityHelper[Ô]: {
[Ô]PublicKey[Ô]: [Ô]<RSAKeyValue><Modulus>rW276jLlBnRSF6AedJTJCHx0ispqqkGc54wfaFn6IGDSlmS1CHKNWu/xUEK9f/rq9iE5egdL3JwT4Le5xL6V08DhufKCh5TUs7JD32Kwt89q/Hgd5MyLHRgkIGketdrjDxZLsGRoIn5N2qgUlOtBa84fv2FJEjoaej3ypnxuL4iwN0w2H3r19RImlqz4e8OCXKVR6JuANShQywb8kCcPMHMz4HwYetCX3w2D+stQp+gyskMwQxehBcOzB4xPfb/Y8Q0cUh/G7r2Rgbkb/jy2DrJN6fNZJKSHvwQtHzei1uQCgkPClEJf+8KM0bb48dR8SNngqkQG2cwdf1YxrHme1w==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>[Ô]
},


Perdi umas madrugadas fazendo isso.


Citação:

Duvida.2:
Criar uma classe para deixar os dados do cliente para evitar a necessidade de select é seguro? (e boa pratica?)



Token.

Tópico encerrado , respostas não são mais permitidas