• vrek@programming.dev
        link
        fedilink
        English
        arrow-up
        29
        ·
        3 days ago

        Couple big things are 1. Only accept reasonable characters, on a white list instead of rejecting bad characters based on a black list. This will mean you are less likely to forget to block /0 for example. 2. Understand how strings work and ensure both reading and writing to that string doesn’t extend beyond the end of memory allocated for the string. For example do you understand what the /0 would do to a string your program accepts?

        • brbposting@sh.itjust.works
          link
          fedilink
          English
          arrow-up
          1
          ·
          2 days ago

          Is it easy for a good developer to allow new lines without any extra security risk exposure?

          Sometimes e.g. a government form will remove new lines, though perhaps sometime they intend to reduce length.

          • vrek@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            ·
            edit-2
            1 day ago

            Depends…how well written the form is. Often stuff like this is pushed to libraries who have covered all the gotchas but you have to be careful not to get into dependency hell. Understand where to use them and not. For example don’t use left_pad but also don’t make your own encryption.

            How easy is it to allow new lines,very easy. The important part is only accepting new lines e.g. /r/n a well made form can include extra functions but anything not defined should be denied.

            Also consider you likely should not accept a username with a semi-colon in it…

          • vrek@programming.dev
            link
            fedilink
            English
            arrow-up
            12
            ·
            3 days ago

            Keep in mind, the lowercase and uppercase letters are in continuous blocks on the ASCII table so you can can use that to verify if a char is a letter without doing an incredible long chain of if else statements.