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

歡迎訪問 生活随笔!

生活随笔

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

数据库

decimal转为string sql_SQL注入详解|OWASP Top 10安全风险实践(二)

發布時間:2023/12/10 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 decimal转为string sql_SQL注入详解|OWASP Top 10安全风险实践(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文為一些列連載文章之一,不定期更新,計劃目錄如下:

OWASP介紹

SQL注入

命令注入

XML外部實體注入

XPATH注入

反射式、DOM及存儲XSS

失效的身份認證和會話管理

不安全的直接對象引用

安全配置錯誤

敏感信息泄露

功能級訪問控制缺失

跨站請求偽造

服務端請求偽造

文件上傳漏洞

未驗證的重定向和轉發

不安全的反序列化

使用含有已知漏洞的組件

一、?????注入

注入攻擊漏洞,例如SQL,OS 以及 LDAP注入。這些攻擊發生在當不可信的數據作為命令或 者查詢語句的一部分,被發送給解釋器的時候。攻擊者發送的惡意數據可以欺騙解釋器,以執行計劃外的命令或者在未被恰當授權時訪問數據。

  • SQL注入

    • 漏洞利用演示

    • 漏洞危害說明

    SQL注入攻擊成功后,可導致用戶數據庫中存儲的機密數據被竊取,更改,刪除,或者上傳木馬文件,甚至執行系統命令以進一步獲取服務器權限等。

    • 漏洞代碼分析

    處理用戶登錄的后臺代碼主要如下:(左右滑動查看代碼)

    publicbooleancheck_Sql_Login(String ipaddr) throws Exception { getConnection(); String name = loginuser.getName(); String passwd_page = loginuser.getPassword(); boolean flag = false; // 默認返回值是false Md5Util md5 = new Md5Util(); String passwd =md5.getMD5(passwd_page.getBytes()); // 拼湊的SQL語句,存在注入風險 String sql = "selectname from user where name=" + "'" + name + "'" + " andpassword=" + "'" + passwd + "'"; System.out.println("登錄頁面,拼湊SQL語句: " + sql); try { java.sql.Statement st = conn.createStatement(); rs =st.executeQuery(sql); if (rs.next()) { flag = true; } else { flag = false; } st.close(); System.out.println("登錄頁面查詢結果" + "db.java.check_Sql_Login():" + flag); } catch (Exceptione) { e.printStackTrace(); } finally { out.close(); conn.close(); } return flag; }

    如果用戶名tmp已經存在,輸入tmp‘#即可。

    如果用戶名不存在,繼續構建條件為true的語句,如xxx’ or 1=1or ‘1’=’1。

    調試輸出分別如下:

    登錄頁面,拼湊SQL語句1: select name from user where name='tmp'#' andpassword='d41d8cd98f00b204e9800998ecf8427e'

    登錄頁面查詢結果db.java.check_Sql_Login(): true

    登錄頁面,拼湊SQL語句1: select name from user where name='xxxxx' or1=1 or '1'='1' and password='d41d8cd98f00b204e9800998ecf8427e'

    登錄頁面查詢結果db.java.check_Sql_Login(): true

    • 漏洞代碼修復

    防止SQL注入可使用:(左右滑動查看代碼)

    ? ? ?a.推薦使用預編譯語句,通過prepared Statements類的set方法對參數進行檢測;??

    publicbooleancheck_Presql_Login() throws Exception { getConnection(); String name = loginuser.getName(); String passwd = loginuser.getPassword(); boolean flag = false; //定義執行的SQL代碼 //區分data和code String sql = "select* from user where name=" + "?" + " andpassword=" + "?"; pst = conn.prepareStatement(sql); pst.setString(1,name); Md5Util md5 = new Md5Util(); passwd = md5.getMD5(passwd.getBytes()); pst.setString(2,passwd); System.out.println("登錄頁面,預編譯SQL語句: " + sql); rs = pst.executeQuery(); if (rs.next()) { flag = true; } else { flag = false; }rs.close();System.out.println("登錄頁面查詢結果" + "db.java.check_Presql_Login():" + flag);return flag;}

    ? ? ?b.使用ESAPI提供的方法;(左右滑動查看代碼)

    publicbooleancheck_EsapiSql_Login() throws Exception { getConnection(); String name = loginuser.getName(); String passwd = loginuser.getPassword(); boolean flag = false; // 默認返回值是false Md5Util md5 = new Md5Util(); passwd = md5.getMD5(passwd.getBytes()); Codec mysqlCodec = newMySQLCodec(MySQLCodec.MYSQL_MODE); String esapi_name = ESAPI.encoder().encodeForSQL(mysqlCodec,name); String esapi_passwd = ESAPI.encoder().encodeForSQL(mysqlCodec,passwd); // 拼湊的SQL語句,存在注入風險 String sql = "selectname from user where name=" + "'" +esapi_name + "'" + " andpassword=" + "'" + esapi_passwd+ "'"; try { java.sql.Statement st = conn.createStatement(); rs =st.executeQuery(sql); if (rs.next()) { flag = true; } else { flag = false; } st.close(); System.out.println("登錄頁面查詢結果" + "db.java.check_Sql_Login():" + flag); } catch (Exceptione) { e.printStackTrace(); } finally { out.close(); conn.close(); } return flag;????}

    c.自定義過濾方法;??

    1)?自定義過濾方法(左右滑動查看代碼)

    protectedstaticboolean sqlValidate(String str) { str = str.toLowerCase();//統一轉為小寫 String badStr = "'|and|exec|execute|insert|select|delete|update|count|drop|*|%|chr|mid|master|truncate|" + "char|declare|sitename|netuser|xp_cmdshell|;|or|-|+|,|like'|and|exec|execute|insert|create|drop|" + "table|from|grant|use|group_concat|column_name|" + "information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|" + "chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#";//過濾掉的sql關鍵字,可以手動添加 String[] badStrs = badStr_miss.split("\\|"); for (int i = 0; i< badStrs.length; i++) { if(str.indexOf(badStrs[i]) >= 0) { System.out.println("發現非法字符:"+badStrs[i]); returntrue; } } returnfalse;}

    2)對用戶輸入進行過濾??(左右滑動查看代碼)

    publicboolean check_ValidSql_Login() throws Exception { getConnection(); String name = loginuser.getName(); String passwd = loginuser.getPassword(); boolean flag = false; // 默認返回值是false Md5Util md5 = new Md5Util(); passwd = md5.getMD5(passwd.getBytes()); // 拼湊的SQL語句,存在注入風險 String sql = "selectname from user where name=" + "'" + name + "'" + " andpassword=" + "'" + passwd + "'"; if (sqlValidate(name)){ System.out.println("登錄頁面,拼湊SQL語句: " + sql); } else { try { java.sql.Statement st = conn.createStatement(); rs = st.executeQuery(sql); if (rs.next()) { flag = true; } else { flag = false; } st.close(); System.out.println("登錄頁面查詢結果" + "db.java.check_Sql_Login():" + flag); } catch (Exceptione) { e.printStackTrace(); } finally { out.close(); conn.close(); } } return flag;}

    作者:王愛華 新鈦云服安全架構師

    二十年IT行業安全咨詢、安全技術和安全管理經驗,擁有安全行業CISSP、CISA認證,曾任浦東中軟、絡安、盛大網絡、平安付、滬江網等公司安全咨詢顧問、安全經理、高級安全研究員、安全架構師職位。處理過互聯網公司各類安全問題,包括信息基礎架構安全,應用架構和代碼安全,應用運維安全,數據安全和災難恢復等。
    熟悉ISO17799、等級保護、PCI-DSS、SOX等信息安全標準規范,具有支付牌照、等級保護、PCI認證的申請、實施和年審經驗。熟悉Shell、Python、Java等語言,曾負責搭建metron開源大數據平臺,單獨開發OWASP TOP 10安全演示平臺和企業信息安全管理平臺等。

    了解新鈦云服

    新鈦云服正式獲批工信部ISP/IDC(含互聯網資源協作)牌照

    深耕專業,矗立鰲頭,新鈦云服獲千萬Pre-A輪融資

    原電訊盈科中國區副總裁加入新鈦云服「附專訪」

    新鈦云服,打造最專業的Cloud?MSP+,做企業業務和云之間的橋梁

    新鈦云服一周年,完成兩輪融資,服務五十多家客戶

    上海某倉儲物流電子商務公司混合云解決方案

    新鈦云服出品的部分精品技術干貨

    OWASP Top 10安全風險實踐(一)

    七個用于Docker和Kubernetes防護的安全工具

    運維人的終身成長,從清單管理開始|萬字長文!

    99%運維不知道,系統文件md5變了,竟然是因為......

    OpenStack與ZStack深度對比:架構、部署、計算存儲與網絡、運維監控等

    什么是云原生?

    IT混合云戰略:是什么、為什么,如何構建?

    總結

    以上是生活随笔為你收集整理的decimal转为string sql_SQL注入详解|OWASP Top 10安全风险实践(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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