Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sonar #18

Open
projectgameEE opened this issue Mar 17, 2020 · 0 comments
Open

Sonar #18

projectgameEE opened this issue Mar 17, 2020 · 0 comments

Comments

@projectgameEE
Copy link

projectgameEE commented Mar 17, 2020

BOAS PRATICAS
REQUISITADAS PELO O SONAR

Acusações encontradas.

Use a variable binding mechanism to construct this query instead of concatenation.

Venerabilidade de nível blocker, isso ocorre devido ao criar string de query (Exemplo: "SELECT * FROM produtos WHERE categoria =" + userInput), para corrigir nao deve se concatenar variáveis junto a string, deve se usar o

Return a copy of...

Objetos mutáveis ​​são aqueles cujo estado pode ser alterado. Por exemplo, uma matriz é mutável, mas uma String não é. Os membros mutáveis ​​da classe nunca devem ser devolvidos a um chamador ou aceitos e armazenados diretamente. Isso o deixa vulnerável a mudanças inesperadas em seu estado de classe. Em vez disso usar um unmodifiable Collection(via Collections.unmodifiableCollection, Collections.unmodifiableList...) ou fazer uma cópia do objeto mutável, e armazenar ou retornar a cópia. Esta regra verifica se matrizes, coleções e datas não são armazenadas ou retornadas diretamente. Exemplo:

public List getDiasVencimento() {
       List copy = new ArrayList<>();
       copy = diasVencimento
       return copy ;
}

The regular expression is vulnerable to a denial of service attack (ReDOS)

Expressões regulares (regexs) estão frequentemente sujeitas a ataques de negação de serviço (DOS) (chamados ReDOS). Isso se deve ao fato de que os mecanismos de regex podem demorar muito tempo ao analisar determinadas cadeias de caracteres, dependendo de como o regex está definido.

Por exemplo, para o regex: ^ (a +) + $ , a entrada " aaaaaaaaaaaaaaaaX" fará com que o mecanismo de regex analise 65536 caminhos diferentes. Uma maneira de evitar esse problema é tirando a regex do codigo exposto e colocando em um PropertiesConstanties

The use of java.util.Random is predictable

Uma solução rápida seria substituir o uso de java.util.Random por algo mais forte, como java.security.SecureRandom .

String generateSecretToken () {
    Random r = new Random ();
    retornar Long.toHexString (r.nextLong ());
}
Solução:
String generateSecretToken () {
    SecureRandom secRandom = new SecureRandom ();
    byte [] resultado = novo byte [32];
    secRandom.nextBytes (resultado);
    retornar Hex.encodeHexString (resultado);
}(Substituir o Random com SecureRandom)

This use of javax/persistence/EntityManager.createQuery(Ljava/lang/String;)Ljavax/persistence/Query; can be vulnerable to SQL/JPQL injection

TypedQuery  q = em.createQuery (
    "selecione * em Usuários em que name = usernameParam", UserEntity.class)
    .setParameter ("nome de usuárioParam", nome de usuário);

UserEntity res = q.getSingleResult ();

Utilizar meios de concatenação de strings... como o StringBuilder .append().

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant