在java中如何用正则表达式屏蔽javascript脚本

在用户评论的时候,我怎么屏蔽输入的JavaScript脚本如alert("xxx");等... 在用户评论的时候,我怎么屏蔽输入的JavaScript脚本如alert("xxx");等 展开
 我来答
一猪之哀伤一
2010-03-24 · TA获得超过669个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:290万
展开全部
你需要把用户评论的内容中的:
"&" 替换成 "&"
"<" 替换成 "<"
">" 替换成 ">"
'"' (双引号)替换成 '"'
"'" (单引号)替换成 '''

这样就可以避免客户端的危险输入了
形如<script type="text/javascript">alert("asdf");</script>
的评论就会被直接显示出来(如同你看到的baidu一样=。=)
而不会被当作html标签转义

====修改====
我的输入被转义了,修改下,记得去掉空格

"&" 替换成 "& amp;"
"<" 替换成 "& lt;"
">" 替换成 "& gt;"
'"' (双引号)替换成 '& quot;'
"'" (单引号)替换成 '& #39;'
百度网友a435633
2010-03-24 · TA获得超过1234个赞
知道大有可为答主
回答量:1018
采纳率:0%
帮助的人:0
展开全部
保存的时候可以原封不动,显示的时候加点处理就可以了。
通常的做法就是楼上所说的,把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/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式