对于飞速发展的互联网来说, 大多数年轻人对于 IT 行业也比较热衷, 不仅前景好, 薪资也是越来越高的, 促进许多朋友在学习编程技术, 但是没有好的方向, 今天小猿圈 web 安全讲师给你讲解 Web 安全之 SQL 注入, 在学的过程中不浪费时间少走弯路.
SQL 注入, 就是通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询字符串, 最终达到欺骗服务器执行恶意的 SQL 命令, 比如先前的很多影视网站泄露 VIP 会员密码大多就是通过 Web 表单递交查询字符暴出的, 这类表单特别容易受到 SQL 注入式攻击.
SQL 注入原理
当应用程序使用输入内容来构造动态 sql 语句以访问数据库时, 会发生 sql 注入攻击. 如果代码使用存储过程, 而这些存储过程作为包含未筛选的用户输入的字符串来传递, 也会发生 sql 注入.
sql 注入可能导致攻击者使用应用程序登陆在数据库中执行命令. 如果应用程序使用特权过高的帐户连接到数据库, 这种问题会变得很严重. 在某些表单中, 用户输入的内容直接用来构造动态 sql 命令, 或者作为存储过程的输入参数, 这些表单特别容易受到 sql 注入的攻击. 而许多网站程序在编写时, 没有对用户输入的合法性进行判断或者程序中本身的变量处理不当, 使应用程序存在安全隐患. 这样, 用户就可以提交一段数据库查询的代码, 根据程序返回的结果, 获得一些敏感的信息或者控制整个服务器, 于是 sql 注入就发生了.
如何防止 SQL 注入?
永远不要信任用户的输入. 对用户的输入进行校验, 可以通过正则表达式, 或限制长度的方式进行处理; 然后对单引号和双 "-" 等敏感符号进行转换等.
不要使用动态拼装 sql, 可以使用参数化的 sql 或者直接使用存储过程进行数据查询存取.
永远不要使用管理员权限的数据库连接, 为每个应用使用单独的权限有限的数据库连接.
不要把机密信息直接存放, 加密或者 hash 掉密码和敏感的信息.
应用的异常信息应该给出尽可能少的提示, 最好使用自定义的错误信息对原始错误信息进行包装.
最后想要了解更多关于 Web 安全方面内容的小伙伴, 请关注小猿圈官网 IT 职业在线学习教育平台为您提供更多开发环境搭建视频等等, 希望在你自学 Web 安全中帮助你指导方向, 少走弯路.
来源: http://www.jianshu.com/p/52d68dad9770