近年来web安全越来越受到企业的重视,作为程序员,我们做程序安全的第一责任人,你对web安全编程又有多少了解呢?
其实了解常见的几个安全编程方法就会让大多数黑客无功而返,下面会一一列举:
1、SQL注入(SQL Injection)
SQL注入是指攻击者利用拼接的sql参数,进行的一些非法操作。
潜在威胁:
a、绕过用户登录认证
例如用户登录 SQL="select username from user where username = '"+v_username+"' and password='"+v_password+"'";
页面用户名可以输入:tom' or 1 =1-- 则直接绕过了密码验证,由于密码部分被注释掉了
b、插入其他恶意语句
如:页面用户名可以输入:tom'; delete from user; --
修复措施:
尽可能使用preparedStatment及下级方法excute excuteQuery excuteUpdate等进行参数设置sql执行。
如果实在不能使用preparedStatment的形式,如in,则必须进行替换或者转移掉危险的字符。
2、插入脚步XSS(Cross-Site Scripting)
XSS是指如果有一个页面里输入数据,另一个页面显示数据。
如果用户在页面输入的是 ,那么在显示页面由于可能使用的是<%=param>、{$param}或者其他打印语句,就会将上面的脚步直接打印字啊html里,打开页面时就会直接弹出。
更有甚者如果直接连接的是其他脚步文件,会存在更大的威胁。
处理办法:
对<和>符号进行转移
< 转义成<
>转义成>
"转义成"
‘转义成%#39;
3、上传隐患
主要是用户上传一些恶意文件到服务器,来控制系统权限。
例如上传一个servlet文件,然后访问这个servlet,从而控制系统权限或者破坏系统。
处理办法:
a、只能上传白名单里的文件类型
b、将上传的文件与web目录分离,建一个公用的文件夹放在不同的盘符
c、关闭文件夹的文件执行权限
4、下载隐患
下载时指定文件的路径,访问非下载目录的文件
如:download.action?path=c:/windows/system32/drivers/etc/host
或者通过../../../../访问下载目录以外的文件
处理办法:
固定下载目录如e:/down,用户输入的文件为子目录或者只是文件名。
5、伪造参数隐患
由于现在的浏览器都支持表单数据修改,脚本代码修改,仅仅依赖于客户端校验或者传值都是不安全的
例如:change.action?amt=300 --->amt=-300
6、脚步迂回(非认证访问、不适当的认证)
通过非正常手段查看脚步,通过修改脚步或者其他措施迂回安全验证达到非法访问的目的
server方追加校验
7、重要信息明文泄漏
通过get方法传值时,重要信息明文泄漏
处理办法敏感信息尽量存储在server方,如果确实需要存储在客户端,最好加密处理
8、Directory Listing(服务器文件目录暴露)
可以访问服务器的文件目录,将过多的服务器文件暴露给了用户。
设置服务器解除目录检索功能。