我最近在HackerNews上进行了一次测试,邀请人们来破坏我的网络应用程序(www.tagxt.com)。
有些人成功地破坏了我试图解决的几件事。
我在这里追求的是:
如何阻止人们创建 ../../
和 ../logout
等用户名,但仍允许他们使用 Unicode 字符(如 ☃☃☃☃☃☃
)?此外,_
下划线还可以。
最大用户名长度为 15 个字符,因此性能不是一个重要因素,但我想找到删除危险字符的最快方法。
验证字符的最快方法是创建所有允许字符的白名单:
allowed = [ 'A','B','C'...]
如果这看起来很乏味,请使用诸如OWASP ESAPI之类的库。
像这样的事情呢:
list = ["A", "B", "C"...]
for i in list:
string1 = "../../"
if i in string1:
print("Error")
我不太确定...