为防止XSS和SQL注入而受限制的字符列表?

Atu*_*vid 3 php mysql security xss sql-injection

我已经阅读了很多文章,找出一个简单的字符列表,可以限制用户输入保护我的网站免受XSS和SQL注入,但找不到任何通用列表.

有人可以通过简单地给我一个安全或不安全字符列表来帮助我吗?我知道这可以是字段特定的,但我需要这个文本字段,我想允许最大可能的字符.

jst*_*ley 5

字符过滤不是你应该如何进行安全性的.要防止SQL注入,请使用预准备语句.要防止XSS,您应该正确地转义所有用户输入


Tro*_*unt 5

"黑名单"方法充满了问题.对于SQLi和XSS,针对白名单的输入验证是必不可少的,即定义您期望的而不是您不期望的.还要记住,用户输入 - 或"不受信任的数据" - 来自许多地方:表单,查询字符串,标题,ID3和exif标记等.

对于SQLi,请确保始终使用参数化SQL语句,通常采用存储过程参数或任何正常的ORM形式.同时应用"最低权限主体"并限制连接到数据库的帐户可以造成的损害.有关SQLi的更多信息,请访问:http://www.troyhunt.com/2010/05/owasp-top-10-for-net-developers-part-1.html

在XSS前端,始终对输出进行编码,并确保对其出现的相应标记语言进行编码.JavaScript的输出编码与CSS不同,后者与CSS不同.请记住,不仅要编码立即反映输入的响应,还要编码存储在数据库中的不受信任的数据,这些数据可能存在持久的XSS威胁.更多关于这一切:http: //www.troyhunt.com/2010/05/owasp-top-10-for-net-developers-part-2.html

我知道这有点超出了原来的问题,但我想说的是,允许的字符只是图片的一小部分.上面提到的其他做法可能更重要(但你仍然应该使用那些白名单).