现在我试图过滤我的所有变量以保护我的网站免受 xss 的影响。我在这里和那里读了一些东西,对我来说,这样做似乎最好的方法是将我需要的所有字符列入我使用的数字的白名单
$adrnr = preg_replace("/[^0-9]/", "", $adrnr);
但如果涉及到单词我有一个问题,因为我是德国人,我需要将 ü,ä,ö 和 ß 列入白名单有没有办法做到这一点?
虽然您可以(甚至应该)过滤/转换/验证您的输入,但必须对您的输出进行 XSS 预防,因为您必须做的是基于上下文的。htmlspecialchars()
将您保存在输出中的许多位置,但不是全部。请参阅OWASP XSS 预防备忘单。
对于德语名称的输入验证,您可以简单地使用:
preg_match('/^[a-zA-ZäöüßÄÖÜ ]+$/', $nachname)
您只需要使用htmlspecialchars来转义 HTML 字符。