任何存在输入/输出方法(包括 GET 与 POST)的页面皆可能存在恶意符号输入缺
陷,主要影响应用包括留言板、在线通讯信息、文章发布页面等。
3.2 整改建议:
对用户输入的参数执行严格检测:
1、对产生漏洞模块的传入参数进行有效性检测。int 类型的只允许 0-9 的整型数字;
string 等字符类型的只允许(1-9,a-z,A-Z)的英文字母;
2、当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服
务器默认的错误输出方式;
3、对穿入参数进行危险字符过滤,禁止('、"、+、%、&、<>、()、;、,.等)特
殊字符的传入。
3.3 案例:
加固范例(一):
/*将 login.jsp 中[String u =request.getParameter("u");]替换为如下内容:*/
String u = request.getParameter("u");
u = u.replace ('<','_');
u = u.replace ('>','_');
u = u.replace('"','_');
u = u.replace('\'','_');
u = u.replace ('%','_');
u = u.replace(';','_');
u = u.replace('(','_');
u = u.replace(')','_');
u = u.replace('&','_');
u = u.replace('+','_');
加固范例(二):
/*更积极的方式是利用正则表达式只允许输入指定的字符:*/
/*在[String u = request.getParameter("u");]后代入以下 isValidInput 函数作
辨别*/
public boolean isValidInput(Stringstr)
{
if(str.matches("[a-z0-9]+"))return true;
else return false;
}
4. URL 重定向钓鱼
4.1 3.1 问题描述:
通过构建 URL,攻击者可以使用户重定向到任意 URL,利用这个漏洞可以诱使用户
访问某个页面,挂马、密码记录、下载任意文件等,常被用来钓鱼。
4.2 3.2 整改建议:
对输入参数进行做处理,建议过滤出所有以下字符:
[1] |(竖线符号)
[2] & (& 符号)
[3];(分号)
[4] $(美元符号)