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?
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.
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...
Many languages like C, Java, Python, etc allow you to construct SQL queries or SQL statements, where SQL is its own language used to communicate with a database, like Oracle or MySql, or Postgres or MSSQL. One way to do this is to construct a string in your language using whatever string functions, concatenation etc available in your language. The problem occurs because usually you want some kind of user input as one of the parameters in your sql query, in order to fetch the correct records the user is asking for. Like say a record ID or name. If you do not properly sanitize that ID or name which originally comes from some type of user input, then a malicious user could carefully craft an ID or name which includes their own SQL and other special characters, which will interfere with the query you intended to construct, and instead do something malicious. Like delete records or obtain records the user is not supposed to have access to.
There are many ways to guard against this, and you should learn about this when you start working with SQL and databases. Itβs called a SQL injection.
There is another type of code injection which can occur if you are making exec() calls (or whatever your language uses) to run shell commands. Similar caution should be taken there.
I mean a prepared statement is still created with a string.
But you definitely want to be using bind parameters with your prepared statements. Not only for security but also potentially performance improvements.
You wouldn't - what they're describing is called "SQL injection" - a way to fool poorly written web server code (regardless of what language it's writen in) into executing SQL code. The poorly written server code takes what's entered in a form field on a web page and pastes it into a skeleton of a SQL statement - in this case the text in the input field is SQL that ends the intended statement, followed by a new statement that deletes a table. For this to even work, the SQL skeleton on the server would have to be structured in just the right way so the modified version with the pasted-in text still makes sense. For this reason, hackers attempting SQL injection usually have to do a lot of trial and error to get something to happen. The only way it can work at all is if the server software handling the web page sends SQL commands to a database server as text, as if they're being typed in, and the server executes them. You can't inject C in this way because unlike SQL, C code isn't just executed, C programs have to be precompiled.
Which means the app was crap. Rather the rules it used to validate a valid name are garbage.
Usually because someone tried to be too strict. E.g. names are space delimited A-Za-z strings, rather than just accepting any old Unicode string and safely processing it (e.g. with an SQL prepared statement).
I've had websites reject email addresses with one of the newish TLD's because someone decided they new how to validate an email address (it's more a more flexible spec than you might think).
Well then someone with a Tagalog name gets caught in your filter...
I mean if it's "perfect" they yes, it'll work, but in production...
Also, you sometimes want to be able to store "1); Drop table abc;" in your database, I mean how do you otherwise store this comment right here? Sanitizing.
I agree with everything in your comment except the last word. Only sanitize in cases where there isn't a better option like html or terminal escape sequences. SQL had prepared statements, which are better.
That's conforming (to what ever criteria). Send me a UTF-16 string of at most 100 code points. Send me a 7-bit ASCII string of only A-Z0-9. Reject anything that doesn't comform.
sanitizing is trying to clean an input. That's "lemme just double escape some special characters" or stripping/replacing/encoding characters or truncating strings, coercing types. Don't do this, your sanitization code will have bugs or edge cases.
I like this very much!
It implies that the person expressing this knows exactly how they feel about Unicode. It's just us, the readers (or some other link in the chain), who have/ has the wrong encoding.
Unless they work for Microsoft. Teams has been showing οΏ½ instead of Γ€ for the caller's name in the popup when someone calls for several weeks now. It didn't use to do that before. I don't think they care anymore.
thatβββββββ ββββsoundsβββββββββββββββββββββββββ aweββββsome!ββββββββββββββββββββββββββββββββββββββ (there's 10k zero width spaces between the quotes ->'ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ'.)
Allow me to make one thing perfectly clear: If you insert those symbols into my perfectly working website... only to mess with me and inadvertently give me vietnam-style flashbacks to the days when I had to deal with incredibly badly formed and misencoded CSV-files on the daily...
Then I will find you and break into your home to replace every second sock with one of the same color and pattern but slightly different make, size or material and you will always wonder why you can't find any exactly fitting pairs of socks anymore.
Usually only happened when a French person copied and pasted their text directly from a Word document... dang weird spaces and accented characters... drove my boss mad when I told him it was because it French, and not a glitch.
Still had to work around it... text counters in textboxes had to account for accented characters, which took two bytes instead of one.
"I only have 2000 letters!" ... 2000 including 200 accent characters made it 2200 characters, not 2000.
βI only have 2000 letters!β β¦ 2000 including 200 accent characters made it 2200 characters, not 2000.
Or, you could count it in Unicode characters, and not in whatever bizarro charset you're using over there. Then "Γ" is one character, just as it's supposed to be.
The problem typically comes from improper conversion between charsets. Like Windows-1252 to Unicode, or something equally horrible.
Easy. Just use utf-32 and make the text field a maximum of 500 letters. That will be a maximum of 2000 bytes, doesn't matter if the user is french or Chinese.
I remember one day long ago when Notepad++ was the real shit, I was using the vertical selection feature and noticed that the selection was shorter on lines that had accented characters. I thought: "huh, accented characters count as two? What would happen if the selection ended in one? Can I select half a character?" no I could not and I had to restart my computer after trying.
I remember feeling extra powerful when Moonshell for the DS shipped with UTF-8 and UTF-16 support because the developer was japenese and wanted to make sure any language would work.
my favorite thing to do is go to small town websites and look at the page source for their forms. 70% of the time they have inputs commented out to "disable" forms or just deprecated functionality.
I like to uncomment them and submit the forms just to fuck with them π€£
I was applying to a job recently, and their online form had a "Upload your documents here" field. Problem was, the input was set to only accept a single file. Well, I wanted to upload two, so I just went into the html and added "multiple" to the input. Which just worked, I even checked the network tab to confirm that both files were submitted.
Haven't heard back from that company yet. It was a web dev position so I hope they appreciate my hijinks π€
I still see this in various text that's meant to be readable.
Usually ampersands are the biggest culprit, but is it just a really sacred data type that can't be upgraded to include punctuation, but can include the foreign looking wingdings that try to stand in for it?
I'm just confused on why those characters have multi character reference names that aren't part of the regular alphabet or punctuation set either, but those still show up instead of having room to just remove the erroneous reference with the actual character.
It's 2026, just dig out this fossil and fix it already.
The characters are all in your own pc. The text data is actually just numbers, referencing the index of each character in a reference table.
Early on someone thought "let's create a bunch of different reference tables and each country uses the one that is best for them so we don't have to include every character in the world".
But that thinking has a critical problem: when you write some text that will only be read within the country, you don't need to keep track of which table you used because everyone will be using the same. Soon you forget that there are other tables for other countries so when you do send an international text using your table as a reference, the person on the other side will be parsing it using their own table and the resulting text will be different. And sometimes when this mixup happens, the index referenced by the text in the other table may actually be some internal control character that is not meant for rendering.
These days the problem is "mostly fixed" by the near-universal adoption of a single reference table that proposes including verything you may ever need (even a lot of emojis) - but this large table means that each character in a text may need more digits to represent the intended index so the total file size for the same text is larger than it would be with the non-universal table.
Exactly. My point is to move to a single universal standard that is used by literally everything so this never happens. Just cut off everything that can't be updated, and it can just sink or swim based on how well it can parse the new table.
Fuck all that ancient non-updateable shit. There's no good reason that old table still exists, much less be possible to use this side of 2000.
Obviously this has legacy problems, but fuck those systems, everyone gotta get new shit now, tough shit. The old table should be cause for new shit to fail compiling in the first place. Shouldn't be possible to use it.
Let's just make forward progress, and lose the chains.
93 Comments
Kenny2999@lemmy.world · 231 pts · 96d
akunohana@piefed.blahaj.zone · 20 pts · 96d
How would you do this in C? I'm a beginner. Does it entail checking/disallowing certain characters and data types? What? π
vrek@programming.dev · 34 pts · 96d
How do you sanitize your inputs or how do you exploit inputs which are not sanitized.
akunohana@piefed.blahaj.zone · 29 pts · 96d
Santize inputs.
I'll get back to you on exploits when I can write something that throws zero compilation errors. π
vrek@programming.dev · 29 pts · 96d
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?
akunohana@piefed.blahaj.zone · 8 pts · 96d
Sic! Thanks! I'll work on this this weekend! π
vrek@programming.dev · 12 pts · 96d
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.
brbposting@sh.itjust.works · 1 pts · 95d
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 · 1 pts · 95d
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...
copacetic@discuss.tchncs.de · 20 pts · 96d
If you use the SQLite C API like this
and someone enters
Robert'; DROP Table Students;--as username, it deletes the table Students.Using this "prepared statement" and "bind", your code is secured against such SQL injection attacks.
jaybone@lemmy.zip · 16 pts · 96d
Many languages like C, Java, Python, etc allow you to construct SQL queries or SQL statements, where SQL is its own language used to communicate with a database, like Oracle or MySql, or Postgres or MSSQL. One way to do this is to construct a string in your language using whatever string functions, concatenation etc available in your language. The problem occurs because usually you want some kind of user input as one of the parameters in your sql query, in order to fetch the correct records the user is asking for. Like say a record ID or name. If you do not properly sanitize that ID or name which originally comes from some type of user input, then a malicious user could carefully craft an ID or name which includes their own SQL and other special characters, which will interfere with the query you intended to construct, and instead do something malicious. Like delete records or obtain records the user is not supposed to have access to.
There are many ways to guard against this, and you should learn about this when you start working with SQL and databases. Itβs called a SQL injection.
There is another type of code injection which can occur if you are making exec() calls (or whatever your language uses) to run shell commands. Similar caution should be taken there.
thesystemisdown@lemmy.world · 6 pts · 96d
I know what I'm dealing with when I see a query that isn't using a prepared statement.
jaybone@lemmy.zip · 3 pts · 96d
I mean a prepared statement is still created with a string.
But you definitely want to be using bind parameters with your prepared statements. Not only for security but also potentially performance improvements.
LovableSidekick@lemmy.world · 6 pts · 96d
You wouldn't - what they're describing is called "SQL injection" - a way to fool poorly written web server code (regardless of what language it's writen in) into executing SQL code. The poorly written server code takes what's entered in a form field on a web page and pastes it into a skeleton of a SQL statement - in this case the text in the input field is SQL that ends the intended statement, followed by a new statement that deletes a table. For this to even work, the SQL skeleton on the server would have to be structured in just the right way so the modified version with the pasted-in text still makes sense. For this reason, hackers attempting SQL injection usually have to do a lot of trial and error to get something to happen. The only way it can work at all is if the server software handling the web page sends SQL commands to a database server as text, as if they're being typed in, and the server executes them. You can't inject C in this way because unlike SQL, C code isn't just executed, C programs have to be precompiled.
RobertTableaux@programming.dev · 12 pts · 96d
My day has come!!!
deadbeef79000@lemmy.nz · 8 pts · 96d
Don't sanitise inputs. Reject non-conforming inputs entirely.
But otherwise: yes.
Valmond@lemmy.dbzer0.com · 9 pts · 96d
And end up having loads of valid requests rejected π
deadbeef79000@lemmy.nz · 3 pts · 96d
If they were valid they wouldn't be rejected.
AzuraTheSpellkissed@lemmy.blahaj.zone · 5 pts · 95d
I've managed webapps which rejected "RenΓ©". Heck, my deadname has a hyphen, which often is considered illegal
deadbeef79000@lemmy.nz · 2 pts · 95d
Which means the app was crap. Rather the rules it used to validate a valid name are garbage.
Usually because someone tried to be too strict. E.g. names are space delimited A-Za-z strings, rather than just accepting any old Unicode string and safely processing it (e.g. with an SQL prepared statement).
I've had websites reject email addresses with one of the newish TLD's because someone decided they new how to validate an email address (it's more a more flexible spec than you might think).
Valmond@lemmy.dbzer0.com · 4 pts · 96d
Well then someone with a Tagalog name gets caught in your filter...
I mean if it's "perfect" they yes, it'll work, but in production...
Also, you sometimes want to be able to store "1); Drop table abc;" in your database, I mean how do you otherwise store this comment right here? Sanitizing.
anton@lemmy.blahaj.zone · 4 pts · 96d
I agree with everything in your comment except the last word. Only sanitize in cases where there isn't a better option like html or terminal escape sequences. SQL had prepared statements, which are better.
deadbeef79000@lemmy.nz · 2 pts · 96d
That's conforming (to what ever criteria). Send me a UTF-16 string of at most 100 code points. Send me a 7-bit ASCII string of only A-Z0-9. Reject anything that doesn't comform.
sanitizing is trying to clean an input. That's "lemme just double escape some special characters" or stripping/replacing/encoding characters or truncating strings, coercing types. Don't do this, your sanitization code will have bugs or edge cases.
nonagonOrc@lemmy.world · 7 pts · 95d
No fuck both of those, just use prepared statements so user input can't be interpreted as SQL.
ivanafterall@lemmy.world · 5 pts · 96d
I'll never conform!
deadbeef79000@lemmy.nz · 3 pts · 96d
Righteous.
Klear@piefed.world · 122 pts · 96d
I see little Bobby Tables is all grown up
Valmond@lemmy.dbzer0.com · 4 pts · 96d
He's taking painting classes. Let's see if the database there can handle him!
zqwzzle@lemmy.ca · 109 pts · 96d
[object Object]
panda_abyss@lemmy.ca · 36 pts · 96d
Yes?
resipsaloquitur@lemmy.cafe · 12 pts · 96d
What? My mother was a saint!
inari@piefed.zip · 4 pts · 96d
NaN
elvith@feddit.org · 84 pts · 96d
I οΏ½ Unicode!
FreshLight@sh.itjust.works · 25 pts · 96d
I like this very much! It implies that the person expressing this knows exactly how they feel about Unicode. It's just us, the readers (or some other link in the chain), who have/ has the wrong encoding.
ValiantDust@feddit.org · 69 pts · 96d
Unless they work for Microsoft. Teams has been showing οΏ½ instead of Γ€ for the caller's name in the popup when someone calls for several weeks now. It didn't use to do that before. I don't think they care anymore.
ChickenLadyLovesLife@lemmy.world · 22 pts · 96d
I don't think it's even "they" any more.
_stranger_@lemmy.world · 66 pts · 96d
Allow me to introduce you to my favorite Unicode character, the zero width space
https://unicode-explorer.com/c/200B
blah3166@piefed.social · 40 pts · 96d
thatβββββββ ββββsoundsβββββββββββββββββββββββββ aweββββsome!ββββββββββββββββββββββββββββββββββββββ (there's 10k zero width spaces between the quotes ->'ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ'.)
DisasterTransport@startrek.website · 23 pts · 96d
thats a 29kb comment right there
ivanafterall@lemmy.world · 9 pts · 96d
I'll be damned. The crazy son of a bitch did it!
noughtnaut@lemmy.world · 4 pts · 96d
Hey that's a neat tool. Link?
DisasterTransport@startrek.website · 7 pts · 96d
sure!
https://lovabletools.com/utf-8-counter
flint@lemmy.zip · 18 pts · 96d
Checks out:
_stranger_@lemmy.world · 8 pts · 96d
solxix@pawb.social · 7 pts · 96d
On Interstellar it shows up as normal spaces for me so there's just a giant block of empty space
blah3166@piefed.social · 1 pts · 95d
sorry about that
Whelks_chance@lemmy.world · 6 pts · 96d
Odd, on the Connect app it shows a bunch of spaces, but not 10k of them.
Opisek@piefed.blahaj.zone · 16 pts · 96d
Unfortunately, evil people blacklist this character a lot :(
May I introduce you to my favorite Unicode character, the Braille zero dots
https://unicode-explorer.com/c/2800
captcha_incorrect@lemmy.world · 4 pts · 95d
Here is the big list of naughty strings.
lalala@lemmy.world · 7 pts · 96d
What kind of devil came up with this?
Strawberry@lemmy.blahaj.zone · 5 pts · 96d
The justification is on the linked page
Enkrod@feddit.org · 32 pts · 96d
Allow me to make one thing perfectly clear: If you insert those symbols into my perfectly working website... only to mess with me and inadvertently give me vietnam-style flashbacks to the days when I had to deal with incredibly badly formed and misencoded CSV-files on the daily...
Then I will find you and break into your home to replace every second sock with one of the same color and pattern but slightly different make, size or material and you will always wonder why you can't find any exactly fitting pairs of socks anymore.
ivanafterall@lemmy.world · 24 pts · 96d
I willingly embraced mismatched socks years ago. I just pretend it's a fashion statement. Come at me bro.
NotMyOldRedditName@lemmy.world · 4 pts · 95d
I started buying all the same sock type, but some might have a little gray or a little brown in the variation, and I dont care, I mix/match.
If one gets a hole its just one of many and is tossed.
ivanafterall@lemmy.world · 3 pts · 95d
I buy colorful, patterned socks of all kinds. Mostly they stay together, but if not, it's fun to pick new partners.
captcha_incorrect@lemmy.world · 4 pts · 95d
I always buy identical socks, cannot mismatch if they are all the same.
vanillama@programming.dev · 2 pts · 91d
Don't let the world change you, this is wonderful
Rhaedas@fedia.io · 26 pts · 96d
Depends on if it breaks the form and they get called. Actually if it gets through they might rightfully question their sanitation coding.
ODuffer@lemmy.world · 25 pts · 96d
ββΔ
NoSpotOfGround@lemmy.world · 15 pts · 96d
Not always, but most times, yeah.
gruvn@sh.itjust.works · 7 pts · 96d
Pretty sure that's illegal here.
Quexotic@infosec.pub · 19 pts · 96d
To the op of the screenshot meme, calm down satan
LovableSidekick@lemmy.world · 18 pts · 96d
Former dev here, can confirm on occasion it does.
Valmond@lemmy.dbzer0.com · 18 pts · 96d
Calm down satan π
9point6@lemmy.world · 17 pts · 96d
Actual monster
Kojichan@lemmy.world · 13 pts · 96d
Usually only happened when a French person copied and pasted their text directly from a Word document... dang weird spaces and accented characters... drove my boss mad when I told him it was because it French, and not a glitch.
Still had to work around it... text counters in textboxes had to account for accented characters, which took two bytes instead of one.
"I only have 2000 letters!" ... 2000 including 200 accent characters made it 2200 characters, not 2000.
AnUnusualRelic@lemmy.world · 5 pts · 96d
Or, you could count it in Unicode characters, and not in whatever bizarro charset you're using over there. Then "Γ" is one character, just as it's supposed to be.
The problem typically comes from improper conversion between charsets. Like Windows-1252 to Unicode, or something equally horrible.
calcopiritus@lemmy.world · 1 pts · 95d
Not if the maximum is due to the database being configured to have a maximum space of 2000 bytes for that field.
AnUnusualRelic@lemmy.world · 2 pts · 95d
Ah, well, bytes β characters, but yes, that can certainly be an issue.
Kojichan@lemmy.world · 1 pts · 95d
I was basically calculating in Javavscript then in PHP for validation before I sent it to Zoho.
The DB also was fine. It was honestly just PHP and Javascript. It's all good now though!
calcopiritus@lemmy.world · 1 pts · 95d
Easy. Just use utf-32 and make the text field a maximum of 500 letters. That will be a maximum of 2000 bytes, doesn't matter if the user is french or Chinese.
Kojichan@lemmy.world · 1 pts · 95d
XD ahahah.
Hudell@lemmy.dbzer0.com · 1 pts · 95d
I remember one day long ago when Notepad++ was the real shit, I was using the vertical selection feature and noticed that the selection was shorter on lines that had accented characters. I thought: "huh, accented characters count as two? What would happen if the selection ended in one? Can I select half a character?" no I could not and I had to restart my computer after trying.
Kojichan@lemmy.world · 1 pts · 94d
I loved Notepad++.
Started in DOS with Edit, regular notepad, got introduced to UltraEdit, then found NP++.
... lol. Sounds like you tried splitting an atom.
mlg@lemmy.world · 13 pts · 96d
I remember feeling extra powerful when Moonshell for the DS shipped with UTF-8 and UTF-16 support because the developer was japenese and wanted to make sure any language would work.
Pika@sh.itjust.works · 12 pts · 96d
Ok calm down there Satan. Leave some chaos for the rest of us π
cupcakezealot@piefed.blahaj.zone · 11 pts · 95d
use %20 randomly for fun
umbraroze@slrpnk.net · 5 pts · 95d
Or just use MIME (e.g.
=20). Guaranteed to make someone say "okay, how the hell did that happen?"(It's also trendy because badly cleaned up MIME garbage is in the Epstein files!)
GreenKnight23@lemmy.world · 11 pts · 95d
my favorite thing to do is go to small town websites and look at the page source for their forms. 70% of the time they have inputs commented out to "disable" forms or just deprecated functionality.
I like to uncomment them and submit the forms just to fuck with them π€£
python@lemmy.world · 5 pts · 95d
I was applying to a job recently, and their online form had a "Upload your documents here" field. Problem was, the input was set to only accept a single file. Well, I wanted to upload two, so I just went into the html and added "multiple" to the input. Which just worked, I even checked the network tab to confirm that both files were submitted.
Haven't heard back from that company yet. It was a web dev position so I hope they appreciate my hijinks π€
Jakylla@jlai.lu · 10 pts · 96d
β‘β‘β‘β‘β‘β‘β‘β‘ !!
oopsgodisdeadmybad@lemmy.zip · 9 pts · 96d
Can this really not be fixed?
I still see this in various text that's meant to be readable.
Usually ampersands are the biggest culprit, but is it just a really sacred data type that can't be upgraded to include punctuation, but can include the foreign looking wingdings that try to stand in for it?
I'm just confused on why those characters have multi character reference names that aren't part of the regular alphabet or punctuation set either, but those still show up instead of having room to just remove the erroneous reference with the actual character.
It's 2026, just dig out this fossil and fix it already.
funkless_eck@sh.itjust.works · 35 pts · 96d
the wrong UTF encoding is usually the issue
dohpaz42@lemmy.world · 9 pts · 96d
Thatβs the joke. π
Hudell@lemmy.dbzer0.com · 1 pts · 95d
The characters are all in your own pc. The text data is actually just numbers, referencing the index of each character in a reference table.
Early on someone thought "let's create a bunch of different reference tables and each country uses the one that is best for them so we don't have to include every character in the world".
But that thinking has a critical problem: when you write some text that will only be read within the country, you don't need to keep track of which table you used because everyone will be using the same. Soon you forget that there are other tables for other countries so when you do send an international text using your table as a reference, the person on the other side will be parsing it using their own table and the resulting text will be different. And sometimes when this mixup happens, the index referenced by the text in the other table may actually be some internal control character that is not meant for rendering.
These days the problem is "mostly fixed" by the near-universal adoption of a single reference table that proposes including verything you may ever need (even a lot of emojis) - but this large table means that each character in a text may need more digits to represent the intended index so the total file size for the same text is larger than it would be with the non-universal table.
oopsgodisdeadmybad@lemmy.zip · 1 pts · 94d
Exactly. My point is to move to a single universal standard that is used by literally everything so this never happens. Just cut off everything that can't be updated, and it can just sink or swim based on how well it can parse the new table.
Fuck all that ancient non-updateable shit. There's no good reason that old table still exists, much less be possible to use this side of 2000.
Obviously this has legacy problems, but fuck those systems, everyone gotta get new shit now, tough shit. The old table should be cause for new shit to fail compiling in the first place. Shouldn't be possible to use it.
Let's just make forward progress, and lose the chains.
davidagain@lemmy.world · 8 pts · 96d
You monster!
diabetic_porcupine@lemmy.world · 7 pts · 96d
Ucarenya@lemmy.zip · 4 pts · 96d
How to make your code look 'modern' 101
coolansplanet@lemmy.today · 4 pts · 96d
ooh, so it was you then!! π
perviouslyiner@lemmy.world · 4 pts · 95d
Always include a % in your song titles to crash car music player software that uses sprintf. (h/t to Dave P)
fibojoly@sh.itjust.works · 3 pts · 95d
And I would be the one biting that bait hard because mojibake are like a pet peeve of mine.
Hudell@lemmy.dbzer0.com · 4 pts · 95d
[object Object]