WEB平安,SQL注入破绽的加固代码汇总
起源:zhengj3.blog.51cto./6106/290724
该修复义务专用于处置以下保险性问题:
.1. SQL 盲注
.2. SQL 注入
.3. XPath 注入
.4. 发明数据库过错模式
.5. 跨站点脚本编制
.6. 使用 SQL 注入的认证旁路
.7. HTTP 响应宰割
.8. 链接注入便于跨站恳求捏造
具体信息
若干问题的补救方式在于对用户输入进行清理。通过验证用户输入未包括危险字符,便可能避免歹意的用户导致利用程序执行打算外的任务,例如:启动任意 SQL 查问、嵌入将在客户端履行的 Javascript 代码、运行各种操作体系命令,等等。倡议过滤出所有以下字符:
.1. '竖线符,
.2. 分,
.4. $美元符,
.5. 百分比符,
.6. at 符,
.7. '单引,
.8. 引,
.9. \'反斜杠转义单引,
.10. \ 反斜杠转义引,
.11. 尖括,
.12. ()括,
.13. +加,
.14. CR回车符,ASCII 0x0d
.15. LF换行,ASCII 0x0a
.16. ,逗,
.17. \反斜杠
以下局部描写各种问题、问题的订正提议以及可能触发这些问题的危险字符:SQL 注入和 SQL 盲注:A. 确保用户输入的值跟类型如 Integer、Date 等有效,且合乎运用程序预期。B. 利用存储进程,将数据拜访形象化,让用户不直接访问表或视图。当应用存储过程时,请应用 ADO 命令对象来实行它们,以强化变量类型。C. 清理输入以排除上下文更改符,,例如:
.1. '单引,
.2. 引,
.3. \'反斜线转义单引,
.4. \ 反斜杠本义引,
.5. )结束括,
.6. ;分,
跨站点脚本编制:A. 清理用户输入,并过滤出 JavaScript 代码。咱们建议您过滤下列字符:
.1. 尖括,
.2. 引,
.3. '单引,
.4. 百分比符,
.5. ;分,
.6. ()括,
.7. 00script 变体,请参阅 MS 文章 821349C. 对 UTF7 攻打: .. 可能的话,建议你实施特定字符集编码使用 'ContentType' 头或 meta 标志。HTTP 响应分割:清理用户输入至少是稍后嵌入在 HTTP 响应中的输入。请确保输入未包含恶意的字符,例如:
.1. CR回车符,ASCII 0x0d
.2. LF换行,ASCII 0x0a远程命令执行:清理输入以排除对执行操作系统命令有意思的符,,例如:
.1. '竖线符,
.2. 分,
执行 shell 命令:A. 毫不将未检讨的用户输入传递给 eval()、open()、sysopen()、system() 之类的 Perl 命令。B. 确保输入未包含恶意的字符,例如:
.1. $美元符,
.2. 百分比符,
.3. at 符,
XPath 注入:清算输入以消除高低文更改符,,例如:
.1. '单引,
.2. 引, 等
LDAP 注入:A. 使用正面验证。字母数字过滤A..Z,a..z,0..9合适大部门 LDAP 查询。B. 应该过滤出或进行转义的特殊 LDAP 字符:
.1. 在字符串开头的空格或 # 字符
.2. 在字符串结尾的空格字符
.3. ,逗,
.4. +加,
.5. 引,
.6. \反斜杠
.7. 尖括,
.8. ;分,
.9. ()括,
MX 注入:应当过滤出特别 MX 字符:
.1. CR回车符,ASCII 0x0d
.2. LF换行,ASCII 0x0a记载伪造:
应该过滤出特殊记载字符:
.1. CR回车符,ASCII 0x0d
.2. LF换行,ASCII 0x0a
.3. BS退格,ASCII 0x08
ORM 注入:A. 确保用户输入的值和类型如 Integer、Date 等有效,且契合应用程序预期。B. 利用存储过程,将数据访问抽象化,让用户不直接访问表或视图。C. 使用参数化查询 APID. 清理输入以排除上下文更改符,,例如: (.):
.1. '单引,
.2. 引,
.3. \'反斜线转义单引,
.4. \ 反斜杠转义引,
.5. )停止括,
.6. ;分,
(.) 这实用于 SQL。高等查询语言可能须要不同的清理机制。
阅读(591) | 评论(0) | 转发(0) |