PplWare Mobile

25 asneiras da programação!

                                    
                                

Este artigo tem mais de um ano


Autor: Vítor M.


  1. Como programador que sou estou curioso para saber quais sao os erros em questao..

  2. Jose Luis says:

    Desculpem o comentario mas…. acho que esta noticia é uma não noticia…
    Pois para ser uma noticia falta pelo menos listar as 25 falhas… pois caso contrario estive a ler a “noticia” e fiquei a saber o mesmo….

    Até porque como Analista Progamador até tinha algum interesse em saber as ditas “Burrices” como voçes comentam.

  3. Vítor M. says:

    No texto tem os links para a lista dos erros.

  4. Cornolius says:

    Acho que é o link a negrito que diz Top25, eis o link por extenso:

    http://cwe.mitre.org/top25/

  5. Cornolius says:

    ok, não é a negrito 😛

  6. Vítor M. says:

    Já agora solicitava aos programadores que possam analisar os erros apontados, que deixassem a vossa opinião aqui nos comentários.
    Desde já o meu agradecimento.

  7. Hugo Sousa says:

    Um URL directo no final da noticia era simpático e bem ao estilo dos posts aqui no Pplware, mas também não precisam de ser assim, eu li a noticia e cliquei logo no link que dizia “Top 25”.

    Anyway, respondendo ao pedido do Vítor, eu sou um programador e estive a ler (meio na diagonal, admito) a tal lista e tenho que admitir que fiquei impressionado. Estava à espera de algo “simples” com aqueles erros mais básicos, mas fiquei contente em ler falhas que realmente merecem a importância que lhes foi dada nesta lista, especialmente no que toca a falhas de segurança e má utilização de recursos de sistema.

  8. Antonio says:

    SQL injection é o mais frequente, as pessoas não gostam de perder tempo a analisar variaveis lolol

  9. Primax says:

    @Jose Luis

    Foi uma opurtunidade falhada de não ter saído o comentário que foi…

    O link está no texto.

  10. TiagoKito says:

    interessante…
    vou dar uma olhada como estudante de programação 🙂

    até ja mandei o link da noticia ao meu professor principal 😛

    Abraco
    bom trabalho pplware 😉

  11. Ora bem, lá explica a “teoria” dos erros, não os erros em si.

    Concordo com a lista, mas pelo que li, não concordo com alguns items naquela lista, por exemplo:

    “Improper shutdown or release of resources”.

    Não considero de forma alguma uma falha de segurança mas sim de performance.

    Podem argumentar “ah e tal, se não tem performance, não é seguro”, mas são coisas diferentes, pois pode comprometer o funcionamento mas não a segurança.

    De resto, MySQL Injection, XSS, são falhas que infelizmente costumo encontrar em muitos sites mesmo (sites mundialmente usados inclusive).

    Eu tenho sempre muito cuidado ao programar e testo sempre tudo ao máximo a nível de segurança.

    A segurança total é impossível de obter, mas é verdade que há quem se poderia esforçar mais 🙂

  12. ricardo says:

    Ola , um off topic , tenho o vista e o ubuntu em dual boot , no outro dia estava no vista e deixei o portatil cair , ao reiniciar , o mesmo da erro de kernel ko , alguem sabe se da pra recuperar o kernel de forma a nao perder o que ja la tenho ? algum programa ?

  13. @ricardo

    Questões/Dúvidas não relacionadas com os artigos devem ser colocadas no Fórum (obténs mais respostas e melhores, tal como mais rápidas, provavelmente).

    No entanto, quanto ao teu problema, não tens no Grub uma opção tipo “Ubuntu 8.10, kernel 2.6.27-9-generic (recovery mode)” ?

  14. Blizard says:

    Bela lista…
    Tem alguns mesmo básicos…
    🙂

    http://truquestelemoveis.blogspot.com/

  15. Jose Luis says:

    As falhas apontadas são quase na sua totalidade para desenvolvimento web…

    Aqui vai uma maneira de “fugir” ao SQL injection… uma maneira de tornar as nossas aplicações mais seguras!

    Simples e eficaz.

    [CODE]
    Public Function SecureForSQL(ByVal SQL As String) As String
    On Error Resume Next
    SQL = Replace(SQL, “;”, “”)
    SQL = Replace(SQL, “‘”, “”)
    SQL = Replace(SQL, “%”, “”)
    SQL = Replace(SQL, “*”, “”)
    SQL = Replace(SQL, “–“, “”)
    SecureForSQL = SQL
    End Function

    [/CODE]

    Never trust user input… 😉

  16. Bruno Bernardino says:

    @Jose Luis

    A tua última frase é verídica sim 🙂

    Quanto à tua função, apesar de em teoria remover SQL Injections, também pode remover dados importantes.

    Imagina que eu uso na minha password um “;”… a password não “entrava” 🙂

    A nível de PHP, existe uma função que se deve aplicar sempre em queries SQL com variáveis: mysql_real_escape_string() juntamente com stripslashes() antes, para “funcionar” em várias configurações de servidor.

  17. Hugo Pires says:

    @Jose Luis

    A melhor forma de prevenir o SQL Injection não é remover a causa mas sim evita-la. Ou seja:
    Em vez de se fazer isto:
    query = “SELECT * FROM tabela WHERE id='” + id + “‘”

    Deve fazer-se algo como isto:
    query = “SELECT * FROM tabela WHERE id=@id”
    e passar o parametro @id quando se for a executar a query

  18. Pedro Silva says:

    @ Bruno Bernardino

    A lista refere-se a erros de programação no geral, não apenas a erros de programação que levam a falhas de segurança.

    Para mim, esse erro faz todo o sentido… se não libertares recursos, como memória, quando não precisas deles ( aka “memory leaks” ) vai acontecer que o teu sistema, em algum ponto, vai chegar ao seu limite. Nesse momento, o teu serviço não consegue continuar em funcionamento e ocorre o Denial of Service. Se alguém, eventualmente, reparar nessa falha e detectar uma forma de a provocar, pode jogar com isso para te fazer DoS …

    Pedro.

  19. @Pedro Silva

    “(…)revelar os 25 maiores erros de programação no que toca à segurança.(…)”.

    Como disse em cima, realmente pode-se atingir um ponto em que se pode considerar um erro de segurança, mas se atribuirmos essa denominação de forma tão abrangente, todo o tipo de erros são de segurança.

    Não deixa de ser verdade o que dizes, mas continuo a não considerar um erro de segurança.

    Cumprimentos

  20. Pedro Silva says:

    @ Bruno Bernardino

    “The 2009 CWE/SANS Top 25 Most Dangerous Programming Errors is a list of the most significant programming errors that can lead to serious software vulnerabilities. They occur frequently, are often easy to find, and easy to exploit. They are dangerous because they will frequently allow attackers to completely take over the software, steal data, or prevent the software from working at all.”

    O que me parece é que esta lista não é apenas sobre segurança, quando eles próprios mencionam “prevent the software from working at all”.

    Quem escreveu esse artigo interpretou como apenas se tratasse de falhas de segurança. Não subscrevo essa interpretação, apenas isso. 🙂

    cumps

    Pedro

  21. @Pedro Silva

    Ok, não me dei ao trabalho de ler no artigo original, pelos vistos tens razão então 🙂

  22. António says:

    Ya o Hugo Pires tem razão, isto para evitar a concatenação de strings numa query sql. Bem jogado Hugo

  23. Edgar Sousa says:

    @Bruno Bernardino

    Se não libertares os recursos como deve ser, um atacante pode tirar partido de outra falha para aceder a dados que já deveriam ter sido libertados…

    Ex.: Não fechas um ficheiro. A função termina, perdes o apontador para o ficheiro, mas o file descriptor continua válido.

  24. Ar says:

    Trabalho numa multinacional que desenvolve software e confirmo que a falha “Error Message Information Leak” é o pão nosso de cada dia.
    “If you use chatty error messages, then they could disclose secrets to any attacker who dares to misuse your software. The secrets could cover a wide range of valuable data, including personally identifiable information (PII), authentication credentials, and server configuration”
    “Debugging information should not make its way into a production release. ”

    Mesmo depois de insistirmos com as equipas de desenvolvimento acerca de falhas deste genero que foram detectadas muitas vezes eles não querem corrigir pois dificulta a análise de erros na aplicação quando há bugs reportados por clientes.

    Um cenário análogo aos que acontecem é algo género:
    Uma pessoa faz um pagamento por cartão de credito no nosso servidor ou aplicação, e o numero do cartão fica no log do servidor.
    O system test diz: o numero do c.c. não pode aparecer no log porque é uma falha de segurança!
    O development diz, pois mas se ocultarmos o numero do log, então o log não nos serve para nada e não podemos fazer o tracking da transacção para seguir os problemas de pagamento e saber que numero pertence a quem etc etc.

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.