dbader / dbader/readme-template

Sonar

Open
#18 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
2k
Forks
4k
PR merge metrics
No merged PRs in 30d

Description

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().

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.