登录前修改密码
Redact passwords before logging
我试图在登录前使用正则表达式从字符串中隐藏密码
$猫rubytest.rb
str = 'login=luser-name&password=secretpw&otherstuff=dontcare'
print "1: ",str.sub(/password=.+(?<post>(&.+))/,'password=<redacted>\k<post>'),"\n"
print "2: ",str.sub(/password=.+(?<post>(&.+)?)/,'password=<redacted>\k<post>'),"\n"
str = 'login=luser-name&password=secretpw'
print "3: ",str.sub(/password=.+(?<post>(&.+))/,'password=<redacted>\k<post>'),"\n"
print "4: ",str.sub(/password=.+(?<post>(&.+)?)/,'password=<redacted>\k<post>'),"\n"
$ ruby rubytest.rb
1: login=luser-name&password=<redacted>&otherstuff=dontcare
2: login=luser-name&password=<redacted>
3: login=luser-name&password=secretpw
4: login=luser-name&password=<redacted>
1:如果 str 得到的数据多于要编辑的密码,则有效,
2:对 EoL 的编辑不是故意的,
3: 根本不编辑,
4:当密码是 str
中的最后一项时有效
如何组合正则表达式 1 和 4?
你不能,除非 &
不能是密码字符。在那种情况下:
/password=[^&]+(?<post>(&.+)?)/
无论如何,如果它在 url 中,您 将 必须对符号进行转码。
我试图在登录前使用正则表达式从字符串中隐藏密码
$猫rubytest.rb
str = 'login=luser-name&password=secretpw&otherstuff=dontcare'
print "1: ",str.sub(/password=.+(?<post>(&.+))/,'password=<redacted>\k<post>'),"\n"
print "2: ",str.sub(/password=.+(?<post>(&.+)?)/,'password=<redacted>\k<post>'),"\n"
str = 'login=luser-name&password=secretpw'
print "3: ",str.sub(/password=.+(?<post>(&.+))/,'password=<redacted>\k<post>'),"\n"
print "4: ",str.sub(/password=.+(?<post>(&.+)?)/,'password=<redacted>\k<post>'),"\n"
$ ruby rubytest.rb
1: login=luser-name&password=<redacted>&otherstuff=dontcare
2: login=luser-name&password=<redacted>
3: login=luser-name&password=secretpw
4: login=luser-name&password=<redacted>
1:如果 str 得到的数据多于要编辑的密码,则有效,
2:对 EoL 的编辑不是故意的,
3: 根本不编辑,
4:当密码是 str
如何组合正则表达式 1 和 4?
你不能,除非 &
不能是密码字符。在那种情况下:
/password=[^&]+(?<post>(&.+)?)/
无论如何,如果它在 url 中,您 将 必须对符号进行转码。