/**
* Notes:获取提交的数据
* @param object
* @throws ITException
*/
public void disposeSpecialChar(Object object) throws ITException {
String name = null;//对象属性
String value = null;//对象值
String[] values = null;//对象数组值
try {
if(null != object && !"".equals(object)){
Class c = object.getClass();//返回一个对象的运行时类
Field[] fields = c.getDeclaredFields();//返回对象的所有字段
for (int i = 0; i < fields.length; i++) {
name = fields[i].getName();//得到字段名
StringBuffer _tmpString = new StringBuffer(name);
_tmpString.setCharAt(0,Character.toUpperCase(_tmpString.charAt(0)));//字段首个字母大写
String getMethod = "get" + _tmpString.toString();//得到字段get方法
String setMethod = "set" + _tmpString.toString();//得到字段set方法
if (fields[i].getType().equals(String[].class)) {//判断当前字段类型是否是字符串数组
values = (String[]) c.getDeclaredMethod(getMethod,new Class[0]).invoke(object,new Object[0]);
if(values != null && !"".equals(values)){
values = setStrs(values);
Object[] arg = { values };
Class[] claszzs = {String[].class};
c.getDeclaredMethod(setMethod,claszzs).invoke(object,arg);
}
} else if(fields[i].getType().equals(String.class)) {//判断当前字段是否是字符串
value =(String) c.getDeclaredMethod(getMethod,new Class[0]).invoke(object,new Object[0]);
if(value != null && !"".equals(value)){
value = setStr(value);
Object[] arg = { value };
Class[] clazzs = {String.class};
c.getDeclaredMethod(setMethod,clazzs).invoke(object,arg);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
throw new ITException(e);
}
}
/**
*
* @author
* Date:2010-01-13
* Notes:特殊字符处理(字符串数组)
*/
public String[] setStrs(String[] strs){
String[] returnSts = new String[strs.length];
for(int i =0;i<strs.length;i++){
returnSts [i] = setStr(strs[i]);
}
return returnSts;
}
/**
*
* @author
* Date:2010-01-13
* Notes:特殊字符处理(单个字符串)
*/
public String setStr(String str) {
StringBuffer sb = new StringBuffer();
char a;
if (null != str && !"".equals(str)) {
for (int i = 0; i < str.length(); i++) {
a = str.charAt(i);
switch (a) {
case '\'' :
sb.append("");
break;
default :
sb.append(a);
}
}
}
return sb.toString();
}
分享到:
相关推荐
当用户点击这个链接时,浏览器会向服务器发送包含恶意脚本的请求,服务器未进行足够的数据验证和过滤,直接将含有恶意脚本的数据返回到响应页面中。此时,恶意脚本在用户的浏览器上执行,可能执行攻击者的任何指令,...
攻击者可能会利用未被过滤的字符组合出新的攻击方式。因此,建议结合多种安全措施共同防御XSS攻击: 1. **输入验证**:除了过滤之外,还应该对用户输入进行严格的验证,确保所有输入都符合预期格式。 2. **输出编码...
鉴于Web应用中的数据与其他系统共享的特殊情况,仅在输入时进行过滤可能无法覆盖所有数据,且可能会影响到其他端数据的正常展示。因此,建议在前端进行一定的处理,比如对输出数据进行转义处理后展示,或使用...
XSS反射型漏洞是XSS的一种类型,它发生在用户通过URL请求参数或者表单提交的数据被直接反射回浏览器并执行的情况。这种攻击通常出现在搜索结果、动态生成的错误消息、URL短链接服务等场景中。当用户点击含有恶意脚本...
存储型XSS,又称持久性XSS,发生在用户提交的数据被存储在服务器端,并在后续请求中返回给其他用户时执行。例如,用户在论坛或评论区输入含有恶意脚本的信息,这些信息被保存在服务器数据库中,当其他用户查看这些...
- **参数过滤**:对用户提交的所有数据进行严格的过滤,防止特殊字符和潜在的恶意脚本注入。 - **编码转换**:对用户提交的数据进行HTML实体编码,避免浏览器将其解析为可执行的脚本。 ##### 输出编码 - **HTML实体...
输入过滤是指在用户提交数据之前,对数据进行检查和清理,以防止恶意脚本被提交。输出过滤是在将数据输出到浏览器之前进行处理,确保输出的数据不会包含可执行的脚本代码。此外,浏览器本身也提供了一些内置的XSS...
1. 什么都没过滤的入门情况:这指的是反射型XSS攻击,用户提交的数据直接被反射到页面上,没有进行任何过滤。由于这种漏洞的存在,攻击者可以通过构造恶意的链接或表单输入,让其他用户执行攻击代码。一个现实的例子...
1. 输入验证:对用户提交的所有数据进行严格的检查和清理,确保只接受预期的数据格式。 2. 输出编码:在将用户数据插入HTML、CSS或JavaScript之前,应使用适当的编码函数(如JavaScript的`encodeURI()`或`...
这种攻击利用的是网站对用户输入数据过滤不严格或者输出数据处理不当的缺陷。 在XSS攻击中,攻击者会将恶意脚本注入到看似可信的网站中。当其他用户浏览该网站时,这些恶意脚本会被执行,从而达到攻击的目的。恶意...
1. 防御策略:防御XSS攻击的关键在于对用户输入进行严格的验证和过滤,确保所有用户提交的数据都被正确转义。此外,使用HTTP-only cookies可以防止会话cookie被JavaScript访问,从而降低攻击风险。内容安全策略...
2. **存储式XSS**:攻击者提交XSS攻击脚本到服务器端存储,当用户访问页面时发生攻击。 3. **基于DOM的XSS**:与文档对象模型(DOM)相关联,通过动态修改页面内容来实现攻击。 #### 八、反射型XSS漏洞案例 假设...
1. 输入验证与编码:对用户提交的数据进行严格的验证,拒绝非法字符和格式。同时,对输出的数据进行编码,例如使用HTML实体编码,避免恶意脚本被执行。 2. 使用HTTP头部的Content-Security-Policy:设置CSP可以限制...
4. **使用数据URI**:利用数据URI协议,攻击者可以直接在页面中嵌入脚本或图片,绕过过滤器。 5. **利用浏览器特性**:例如,利用`document.write()`、`eval()`等JavaScript函数执行动态代码,或者利用JSONP(JSON ...
2. 反射式漏洞(type B):这种漏洞和 type A 相似,不同的是 Web 客户端使用 Server 端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经 HTML 实体编码,客户端代码便能够注入到动态页面...
1. **输入验证**:严格检查用户提交的数据,对特殊字符和可能的脚本标签进行过滤或转义。 2. **输出编码**:对输出到HTML的用户数据进行适当的编码,如使用OWASP ESAPI的输出编码功能。 3. **设置HttpOnly**:启用...
2. **反射型XSS**:也称为非持久性XSS,它通常发生在网站直接使用用户提交的数据构建网页响应时,如搜索功能返回的结果页面。当用户点击一个包含恶意脚本的链接时,这个脚本会被反射回用户自己的浏览器并执行。 3. ...
XSS攻击的原理在于,攻击者利用Web应用程序未能有效过滤或转义用户输入的漏洞,将带有恶意脚本的数据提交到服务器。当其他用户浏览含有恶意脚本的页面时,浏览器会将这些脚本当作合法内容执行。攻击者通常通过script...
DOM XSS并非传统的存储型或反射型XSS,而是通过修改页面的DOM结构来注入恶意脚本,这些脚本在用户浏览器中执行,对用户的隐私和数据安全构成威胁。在这种情况下,Facebook的安全漏洞就在于它未能正确过滤或转义通过`...
例如,一个动态生成的URL或页面元素的属性可能包含用户提供的数据,如果这些数据未经过滤或编码就用于生成动态内容,攻击者就能注入恶意脚本。一旦用户访问了包含恶意脚本的页面,这些脚本将在用户的浏览器环境中...