iT邦幫忙

0

修改以前的程式碼 提高程式的安全性

  • 分享至 

  • xImage

為了提高安全性需將sql語法從jsp頁面上移除
改成從.java呼叫

public void last(String sysid,String userid)throws IOException,SQLException
	{
		String sql = "update user set last_active_time ='"+sysid+"' where userid ='"+userid+"' ";
		stmt.executeUpdate(st) ;
	}

目前的程式碼

sql="SELECT * FROM switch.user";
		rs = smt.executeQuery(sql);
		while(rs.next())
		{
			String account = rs.getString("userid");
			String password = rs.getString("password");
			if(account.equals(userid) && password.equals(pwd))
			{
				nrt.last(sysid, userid);
	%>
        <jsp:forward page="/WEB-INF/switch.jsp">
		<jsp:param name="userid" value="<%=userid%>" />
		<jsp:param name="pwd" value="<%=password%>" />
        </jsp:forward>
	<%
			}
			else
			{
				out.println("<meta http-equiv=\"refresh\" content=\"0; url=index.jsp\">");
			}
		}

我的問題是 上述程式中的sql="SELECT * FROM switch.user";
該建立回傳什麼值的方法 讓程式可以順利執行(取得 userid 與 password 執行登入驗證 )
下面附上table

CREATE TABLE `user` (
  `sysid` varchar(45) NOT NULL,
  `userid` varchar(45) NOT NULL,
  `username` varchar(45) DEFAULT NULL,
  `password` varchar(45) DEFAULT NULL,
  `last_active_time` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`sysid`,`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('001','aaa',NULL,'123a','2021-10-08 10:10:26'),('002','bbb',NULL,'123b','2021-10-04 09:18:24'),('003','abc',NULL,'123c','2021-10-04 15:56:33');
ckp6250 iT邦好手 1 級 ‧ 2021-10-08 11:56:09 檢舉
如果以【提高程式的安全性】為考量重點,
那麼最好所有頁面上,都不要有 select , update , delete 等等指令,
一律用【call proc_xxx(in aaa, in bbb)】來處理。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
海綿寶寶
iT邦大神 1 級 ‧ 2021-10-08 12:16:01
briton iT邦新手 5 級 ‧ 2021-10-08 13:38:54 檢舉

謝謝你的分享

我要發表回答

立即登入回答