在java中如何用正则表达式屏蔽javascript脚本
2个回答
展开全部
你需要把用户评论的内容中的:
"&" 替换成 "&"
"<" 替换成 "<"
">" 替换成 ">"
'"' (双引号)替换成 '"'
"'" (单引号)替换成 '''
这样就可以避免客户端的危险输入了
形如<script type="text/javascript">alert("asdf");</script>
的评论就会被直接显示出来(如同你看到的baidu一样=。=)
而不会被当作html标签转义
====修改====
我的输入被转义了,修改下,记得去掉空格
"&" 替换成 "& amp;"
"<" 替换成 "& lt;"
">" 替换成 "& gt;"
'"' (双引号)替换成 '& quot;'
"'" (单引号)替换成 '& #39;'
"&" 替换成 "&"
"<" 替换成 "<"
">" 替换成 ">"
'"' (双引号)替换成 '"'
"'" (单引号)替换成 '''
这样就可以避免客户端的危险输入了
形如<script type="text/javascript">alert("asdf");</script>
的评论就会被直接显示出来(如同你看到的baidu一样=。=)
而不会被当作html标签转义
====修改====
我的输入被转义了,修改下,记得去掉空格
"&" 替换成 "& amp;"
"<" 替换成 "& lt;"
">" 替换成 "& gt;"
'"' (双引号)替换成 '& quot;'
"'" (单引号)替换成 '& #39;'
展开全部
保存的时候可以原封不动,显示的时候加点处理就可以了。
通常的做法就是楼上所说的,把HTML的关键符号替换掉。
简单的代码:
import java.text.*;
import java.util.*;
public class htmlencodes {
private static final char c[] = { '<', '>', '&', '\"'};
private static final String expansion[] = {"<", ">", "&",
"""};
public static String HTMLEncode(String s) {
StringBuffer st = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
boolean copy = true;
char ch = s.charAt(i);
for (int j = 0; j < c.length ; j++) {
if (c[j]==ch) {
st.append(expansion[j]);
copy = false;
break;
}
}
if (copy) st.append(ch);
}
return st.toString();
}
}
比较完整的替换可以用这个:
https://htmlentities.dev.java.net/
通常的做法就是楼上所说的,把HTML的关键符号替换掉。
简单的代码:
import java.text.*;
import java.util.*;
public class htmlencodes {
private static final char c[] = { '<', '>', '&', '\"'};
private static final String expansion[] = {"<", ">", "&",
"""};
public static String HTMLEncode(String s) {
StringBuffer st = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
boolean copy = true;
char ch = s.charAt(i);
for (int j = 0; j < c.length ; j++) {
if (c[j]==ch) {
st.append(expansion[j]);
copy = false;
break;
}
}
if (copy) st.append(ch);
}
return st.toString();
}
}
比较完整的替换可以用这个:
https://htmlentities.dev.java.net/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询