跨站脚本攻击的方法和防御

<body><H3>留言內容</H3><fieldset><h2><% out.print(request.getParameter("message"));%></h2></fieldset></body>

攻击方法1

使用者可以輸入Script語法,造成XSS的攻擊。

攻击方法2

使用者可能留下惡意連結,讓其他的瀏覽者點閱後導向惡意網站。

 

解决方案1

較常用的手段就是進行輸入資料的過濾,將危險字元進行替換,程式碼如下:

<body>
<H3>留言內容</H3>
<fieldset><h2>
<% 
String message = request.getParameter("message");
message = message.replace ('<',' '); 
message = message.replace ('>',' '); 
message = message.replace ('"',' ');
message = message.replace ('\'',' ');
message = message.replace ('/',' ');
message = message.replace ('%',' '); 
message = message.replace (';',' '); 
message = message.replace ('(',' '); 
message = message.replace (')',' '); 
message = message.replace ('&',' '); 
message = message.replace ('+','_'); 
out.print(message);
%>
</h2>
</fieldset>
</body>
 

解决方案2

利用正規函式,只顯示允許使用者輸入指定的字元:

<H3>留言內容</H3>
<fieldset><h2>
<% 
String message = request.getParameter("message");
if(isValidInput(message)){
	out.print(message);
}
else
	out.print("you have WRONG Input!");
 
%>
</h2>
</fieldset>
<%!
public boolean isValidInput(String str) 
{ 
if(str.matches("[a-zA-Z0-9 ]+")) return true; 
else return false; 
}
%>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值