Krug.SanitizerUtil (Krug v0.1.0) View Source

Utilitary secure module to provide methods that help whit data sanitization for validation, and some methods that result sanitized values.

Link to this section Summary

Functions

Return the valid email chars array.

Generates a random string whit length size containing "A-z0-9" chars.

Generates a random string whit length size containing only allowed chars to be used in file names.

Generates a random string whit length size containing only numeric 0-9 chars.

Verify if an element of arrayValues is one of [nil,""," "].

Verify if an element of arrayValues is < value.

Return the valid money format chars array.

Return the valid numeric chars array.

Return the valid numbers chars array.

Convert received value to a string, make some validations of forbidden content.

Convert received value to a string, make some validations of forbidden content and allowed chars. If forbidden content or not allowed chars are finded, return empty string for not numeric input values and "0" for numeric values.

Sanitizes a file name to escape not allowed chars and force the use of file name whit length <= maxSize.

Convert received value to a string, and replace some special chars to normalized chars.

Verify if an email contains only allowed chars to be present on email. Apply lowercase before verification.

Verify if an url contains only chars allowed to be in a url.

Link to this section Functions

Return the valid email chars array.

Example

iex > Krug.SanitizerUtil.emailChars()
["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
 "0","1","2","3","4","5","6","7","8","9",
 "-","+","@","_","."]

Generates a random string whit length size containing "A-z0-9" chars.

["A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z",
 "a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z",
 "0","1","2","3","4","5","6","7","8","9",
 "(",")","*","-","+","%","@","_",".",",","$",":"," ","/"]

If size is not a number, set size to 10.

Examples

iex > Krug.SanitizerUtil.generateRandom(nil)
"V@/)B*$fXG" - random
iex > Krug.SanitizerUtil.generateRandom("")
"NXd6oBJJK$" - random
iex > Krug.SanitizerUtil.generateRandom(" ")
"WñQcVCX1m(" - random
iex > Krug.SanitizerUtil.generateRandom("10")
"Y,nEWnty/t" - random
iex > Krug.SanitizerUtil.generateRandom(20)
"28ñHH5I2:$jcPCñ6kNk8" - random
iex > Krug.SanitizerUtil.generateRandom("30")
"7@sX$M%7gyy,58$_p@48_rRN%VjtVO" - random
Link to this function

generateRandomFileName(size)

View Source

Generates a random string whit length size containing only allowed chars to be used in file names.

If size is not a number, set size to 10.

Examples

iex > Krug.SanitizerUtil.generateRandomFileName(nil)
"2mi1k281XY" - random
iex > Krug.SanitizerUtil.generateRandomFileName("")
"1xdsohbWBs" - random
iex > Krug.SanitizerUtil.generateRandomFileName(" ")
"3orpWPvnfg" - random
iex > Krug.SanitizerUtil.generateRandomFileName(10)
"T29p17Gbqi" - random
iex > Krug.SanitizerUtil.generateRandomFileName("20")
"Ry7JFypiFVl2z8jDhsg1" - random
iex > Krug.SanitizerUtil.generateRandomFileName(30)
"OxC5DTSmih3BG5uj7KmK1XgWDvMBe3" - random
Link to this function

generateRandomOnlyNum(size)

View Source

Generates a random string whit length size containing only numeric 0-9 chars.

If size is not a number, set size to 10.

Examples

iex > Krug.SanitizerUtil.generateRandomOnlyNum(nil)
"8842631571" - random
iex > Krug.SanitizerUtil.generateRandomOnlyNum("")
"3983415257" - random
iex > Krug.SanitizerUtil.generateRandomOnlyNum(" ")
"5367142216" - random
iex > Krug.SanitizerUtil.generateRandomOnlyNum(10)
"1519486235" - random
iex > Krug.SanitizerUtil.generateRandomOnlyNum("20")
"45396319754971833184" - random
iex > Krug.SanitizerUtil.generateRandomOnlyNum(30)
"845951826982685147272442547731" - random

Verify if an element of arrayValues is one of [nil,""," "].

Examples

iex > Krug.SanitizerUtil.hasEmpty(nil)
false
iex > Krug.SanitizerUtil.hasEmpty([])
false
iex > Krug.SanitizerUtil.hasEmpty([nil,1,2])
true
iex > Krug.SanitizerUtil.hasEmpty([3,4,""])
true
iex > Krug.SanitizerUtil.hasEmpty([8,7,9," "])
true
iex > Krug.SanitizerUtil.hasEmpty([[],%{},9,34,"$A"])
false
Link to this function

hasLessThan(arrayValues, value)

View Source

Verify if an element of arrayValues is < value.

If arrayValues is nil/empty return true.

If value is not a number return false.

Examples

iex > Krug.SanitizerUtil.hasLessThan(nil,1)
true
iex > Krug.SanitizerUtil.hasLessThan([""],1)
false
iex > Krug.SanitizerUtil.hasLessThan([nil],1)
false
iex > Krug.SanitizerUtil.hasLessThan([1],nil)
false
iex > Krug.SanitizerUtil.hasLessThan([1],"")
false
iex > Krug.SanitizerUtil.hasLessThan([1],"-1-1")
false
iex > Krug.SanitizerUtil.hasLessThan([1],"10")
true
iex > Krug.SanitizerUtil.hasLessThan([1,0],1)
true
iex > Krug.SanitizerUtil.hasLessThan([1,0,-1],"-0.5")
true
iex > Krug.SanitizerUtil.hasLessThan([1,0,-1],"-0,5.5")
false - * "-0,5.5" convert to -5.5
iex > Krug.SanitizerUtil.hasLessThan([1,0,-1],"-0,0.5")
true
iex > Krug.SanitizerUtil.hasLessThan([1,0,-1,[],nil,%{}],"-0,0.5")
true
iex > Krug.SanitizerUtil.hasLessThan([1,0,2,[],nil,%{}],"-0,0.5")
false

Return the valid money format chars array.

Example

iex > Krug.SanitizerUtil.moneyChars()
[",","0","1","2","3","4","5","6","7","8","9"]

Return the valid numeric chars array.

Example

iex > Krug.SanitizerUtil.nums()
["-",".","0","1","2","3","4","5","6","7","8","9"]

Return the valid numbers chars array.

Example

iex > Krug.SanitizerUtil.onlyNums()
["0","1","2","3","4","5","6","7","8","9"]

Convert received value to a string, make some validations of forbidden content.

If forbidden content are finded, return nil. Otherwise return received value making some unobfscating substution operations.

Examples

iex > Krug.SanitizerUtil.sanitize("echo <script echo")
nil
iex > Krug.SanitizerUtil.sanitize("echo < script echo")
nil
iex > Krug.SanitizerUtil.sanitize("echo script> echo")
nil
iex > Krug.SanitizerUtil.sanitize("echo script > echo")
nil
iex > Krug.SanitizerUtil.sanitize(echoscript>echo)
nil
iex > Krug.SanitizerUtil.sanitize("echoscriptecho")
"echoscriptecho"
iex > Krug.SanitizerUtil.sanitize("echo script echo")
"echo script echo"
Link to this function

sanitizeAll(input, isNumber, sanitizeInput, maxSize, validChars)

View Source

Convert received value to a string, make some validations of forbidden content and allowed chars. If forbidden content or not allowed chars are finded, return empty string for not numeric input values and "0" for numeric values.

If sanitizeInput received as true, then call additionally methods to sanitize the value as comming from a html input field (type: text,number and all others except textarea).

validChars should be a string whit the valid chars aceppted, separated by comma (ex.: "a,b,c,d,4") or a string that matches whit a predefined values name. If validChars is nil/empty default value "A-z0-9" is used if isNumber = false otherwise if is a number the "0-9" value used by default.

Named validChars predefined values and respective chars:

  • "A-z0-9"

    ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z",
    "a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z",
    "0","1","2","3","4","5","6","7","8","9",
    "(",")","*","-","+","%","@","_",".",",","$",":"," ","/"]
  • "A-z0-9Name"

    ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z",
    "a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z",
    "0","1","2","3","4","5","6","7","8","9",
    "-",","," "]
  • "A-z0-9|" All "A-z0-9" more "|"

  • "0-9"

    ["-",".","0","1","2","3","4","5","6","7","8","9"]
  • "A-z"

    ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z",
    "a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z",
    "(",")","*","-","+","%","@","_",".",",","$",":"," ","/"]
  • "a-z"

    ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z",
    "(",")","*","-","+","%","@","_",".",",","$",":"," ","/"]
  • "A-Z"

    ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z",
    "(",")","*","-","+","%","@","_",".",",","$",":"," ","/"]
  • "DATE_SLASH"

    [":","/"," ","0","1","2","3","4","5","6","7","8","9"]
  • "DATE_SQL"

    [":","-"," ","0","1","2","3","4","5","6","7","8","9"]
  • "email"

    ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
    "0","1","2","3","4","5","6","7","8","9",
    "-","+","@","_","."]
  • "password"

    ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
    "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
    "0","1","2","3","4","5","6","7","8","9",
    "*","+","%","@","_",".",",","$",":","-"]
  • "url"

    ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z",
    "a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z",
    "0","1","2","3","4","5","6","7","8","9",
    "(",")","*","-","+","%","@","_",".",",","$",":"," ",";","/","\","?","=","&","[","]","{","}"]
  • "hex"

    ["A","B","C","D","E","F","a","b","c","d","e","f","0","1","2","3","4","5","6","7","8","9"]
  • "filename"

    ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
    "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
    "0","1","2","3","4","5","6","7","8","9",
    "_","."]

Examples

iex > Krug.SanitizerUtil.sanitizeAll("09 8778 987",false,true,250,"0-9")
""
iex > Krug.SanitizerUtil.sanitizeAll("098778987",false,true,250,"0-9")
"098778987"
iex > Krug.SanitizerUtil.sanitizeAll("09 8778 987",true,true,250,"0-9")
"0"
iex > Krug.SanitizerUtil.sanitizeAll("098778987",true,true,250,"0-9")
"098778987"
iex > Krug.SanitizerUtil.sanitizeAll("09 8778 987 ABCDEF ",false,true,250,"A-z")
""
iex > Krug.SanitizerUtil.sanitizeAll("09 8778 987 ABCDEF ",false,true,250,"0-9")
""
iex > Krug.SanitizerUtil.sanitizeAll("09 8778 987 ABCDEF ",false,true,250,"A-z0-9")
"09 8778 987 ABCDEF"
Link to this function

sanitizeFileName(name, maxSize)

View Source

Sanitizes a file name to escape not allowed chars and force the use of file name whit length <= maxSize.

If any not allowed char is found, or the file name length > maxSize, the value received is ignored and a new random name is generated whit the valid chars whit size = maxSize and return.

If maxSize is nil or maxSize <= 0, maxSize for generate a ramdom string name receive 10. (Then the file name has no limit of chars, if contains only valid chars).

Allowed chars:

["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
 "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
 "0","1","2","3","4","5","6","7","8","9",
 "_","."]

Examples

iex > Krug.SanitizerUtil.sanitizeFileName(nil,10)
"rOufHwKL7a" - random
iex > Krug.SanitizerUtil.sanitizeFileName("",10)
"WQskDae0ZP" - random
iex > Krug.SanitizerUtil.sanitizeFileName(" ",10)
"htlp9cKxHC" - random
iex > Krug.SanitizerUtil.sanitizeFileName(" ",10)
"rOufHwKL7a" - random
iex > Krug.SanitizerUtil.sanitizeFileName(" afdd#%%{}8989nfdfdd@",10)
"ts44e22BuP" - random
iex > Krug.SanitizerUtil.sanitizeFileName("afdd#%%{}8989nfdfdd@",100)
"Jnn7nZICOwuuOXou4q7EBqNVtPHcYgvjh7dORJczzIlPMI7Yr5N96miqHv8gV88KTc2QOaW1yG9FJRsqeRMCKtVTbjepPKQE3whd" - random
iex > Krug.SanitizerUtil.sanitizeFileName("Aabcde_fg.6712.89_as",10)
"ts44e22BuP" - random
iex > Krug.SanitizerUtil.sanitizeFileName("Aabcde_fg.6712.89_as",19)
"ts44e22BuP" - random
iex > Krug.SanitizerUtil.sanitizeFileName("Aabcde_fg.6712.89_as",20)
"Aabcde_fg.6712.89_as"
iex > Krug.SanitizerUtil.sanitizeFileName("Aabcde_fg.6712.89_as",50)
"Aabcde_fg.6712.89_as"

Convert received value to a string, and replace some special chars to normalized chars.

  • Special chars:

    ["ã","á","à","â","ä","å","æ",
    "é","è","ê","ë",
    "í","ì","î","ï",
    "õ","ó","ò","ô","ö","ø","œ","ð",
    "ú","ù","û","ü","µ",
    "ç","š","ž","ß","ñ","ý","ÿ",
    "Ã","Á","À","Â","Ä","Å","Æ",
    "É","È","Ê","Ë",
    "Í","Ì","Î","Ï",
    "Õ","Ó","Ò","Ô","Ö","Ø","Œ",
    "Ú","Ù","Û","Ü",
    "Ç","Š","Ž","Ÿ","¥","Ý","Ð","Ñ"]
  • Normalized chars:

    ["a","a","a","a","a","a","a",
    "e","e","e","e",
    "i","i","i","i",
    "o","o","o","o","o","o","o","o",
    "u","u","u","u","u",
    "c","s","z","s","n","y","y",
    "A","A","A","A","A","A","A",
    "E","E","E","E",
    "I","I","I","I",
    "O","O","O","O","O","O","O",
    "U","U","U","U",
    "C","S","Z","Y","Y","Y","D","N"]

Example

iex > Krug.SanitizerUtil.translate("éèêëÇŠŽŸ¥ÝÐÑ")
"eeeeCSZYYYDN"

Verify if an email contains only allowed chars to be present on email. Apply lowercase before verification.

  • Allowed chars:
    ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
    "0","1","2","3","4","5","6","7","8","9",
    "-","+","@","_","."]

Examples

iex > Krug.SanitizerUtil.validateEmail(nil)
false
iex > Krug.SanitizerUtil.validateEmail("")
false
iex > Krug.SanitizerUtil.validateEmail([])
false
iex > Krug.SanitizerUtil.validateEmail([""])
false
iex > Krug.SanitizerUtil.validateEmail("echo@ping%com")
false
iex > Krug.SanitizerUtil.validateEmail("echo@ping$com")
false
iex > Krug.SanitizerUtil.validateEmail("echo@ping.com")
true
iex > Krug.SanitizerUtil.validateEmail("echo@ping_com")
true

Verify if an url contains only chars allowed to be in a url.

  • Allowed chars:
    ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z",
    "a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z",
    "0","1","2","3","4","5","6","7","8","9",
    "(",")","*","-","+","%","@","_",".",",","$",":"," ",";","/","\","?","=","&","[","]","{","}"]

Examples

iex > Krug.SanitizerUtil.validateUrl(nil)
false
iex > Krug.SanitizerUtil.validateUrl("")
false
iex > Krug.SanitizerUtil.validateUrl(" ")
false
iex > Krug.SanitizerUtil.validateUrl([])
false
iex > Krug.SanitizerUtil.validateUrl([""])
false
iex > Krug.SanitizerUtil.validateUrl("www.google.com")
false
iex > Krug.SanitizerUtil.validateUrl("http://www.google.com")
true
iex > Krug.SanitizerUtil.validateUrl("https://www.google.com")
true
iex > Krug.SanitizerUtil.validateUrl("https://www.echo|")
false