Regex 辩论:是否从注册系统中排除字符?安全

Regex 辩论:是否从注册系统中排除字符?安全,regex,character,controls,registration,Regex,Character,Controls,Registration,我为一个学生网站项目建立了一个简单的网站,我的一个朋友让我在我的注册系统上添加一个字符控件,就像用PHP构建的regex网站一样 事实上,我同意排除一些字符,如空格、点或@,但为什么要排除/、*或-字符?我在这里讲的是用户名和密码字段 有人说这是为了安全,但实际上,开发人员不是要实现一个内部安全代码来实现这一点吗 问:为什么人们认为这些角色很危险?我们可以在文本字段上使用它们,比如stackoverflow,那么用户名字段有什么区别呢 您的意见是什么,您是否在项目中使用regex来保护您的条目?

我为一个学生网站项目建立了一个简单的网站,我的一个朋友让我在我的注册系统上添加一个字符控件,就像用PHP构建的regex网站一样

事实上,我同意排除一些字符,如空格、点或@,但为什么要排除/、*或-字符?我在这里讲的是用户名和密码字段

有人说这是为了安全,但实际上,开发人员不是要实现一个内部安全代码来实现这一点吗

问:为什么人们认为这些角色很危险?我们可以在文本字段上使用它们,比如stackoverflow,那么用户名字段有什么区别呢


您的意见是什么,您是否在项目中使用regex来保护您的条目?

我认为这是因为它们可以用作注释分隔符,从而使您的代码容易受到SQL注入攻击。 e、 g:

在数据库中使用之前,应清除所有用户输入。Regex只是一个可以使用的工具,不一定是最好的。考虑使用一个为您清理输入的库,而不是构建自己的查询。


就我个人而言,我会允许所有字符,并通过尝试用注入攻击破坏我自己的代码来确保它们已被清除。

目前,我使用pdo将自己连接到数据库。这就足够了,或者我需要添加其他保护,包括正则表达式?当我在时:你在JEE/C中使用什么?MySql连接器已经足够好了?只要不直接在查询中插入字符串,而是使用PDO函数就可以了。您可以尝试类似“选择*自,安全!”!,使用PDO将用户输入插入查询,然后尝试foobar注入攻击!看看会发生什么。如果你安全了!在第二篇专栏文章中,注入攻击失败了。mysqli for improved connector不再使用mysql,这是安全的,但这是一项艰巨的工作,很容易遗漏一些东西。至于其他语言,我对它们没有直接的经验,但是你可以做与上面相同的测试,看看会发生什么。
-- An SQL comment. Very dangerous if not handled properly
// C, JavaScript, PHP, etc. Not applicable to SQL
/* C, JavaScript, PHP, etc. */