反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-驗證檢查
通常應用程式應該驗證使用者的輸入,以確保輸入的內容是所希望的。
例,如果使用者為delete語句傳入部門編號,可以從departments表中做查詢來驗證輸入的部門編號;
如果使用者輸入刪除的表名,則可以查詢all_tables來驗證表名的存在。
在有效性檢查程式碼中,DBMS_ASSERT包中的子程式是有用的。
可以使用DBMS_ASSERT.ENQUOTE函式來將字串字面量使用引號括起來。這可以阻止惡意使用者在開始和結束引號間注入文字。
-- 11g12_07_13.prc CREATE OR REPLACE PROCEDURE raise_emp_salary (column_value NUMBER, emp_column VARCHAR2, amount NUMBER) IS v_column VARCHAR2(30); sql_stmt VARCHAR2(200); BEGIN -- 檢測輸入的列名有效性 SELECT column_name INTO v_column FROM USER_TAB_COLS WHERE TABLE_NAME = 'EMPLOYEES' AND COLUMN_NAME = emp_column;
sql_stmt := 'UPDATE employees SET salary = salary + :b1 WHERE ' || DBMS_ASSERT.ENQUOTE_NAME(v_column, FALSE) || ' = :b2';
EXECUTE IMMEDIATE sql_stmt USING amount, column_value;
-- 如果列名有效 IF SQL%ROWCOUNT > 0 THEN DBMS_OUTPUT.PUT_LINE('更新列: ' || emp_column || ' = ' || column_value || '的員工薪水'); END IF;
-- 如果列名無效 EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ('無效列: ' || emp_column); END raise_emp_salary;
--11g12_07_13.tst --測試前先檢視相關的資料 SELECT employee_id, department_id, salary FROM employees WHERE employee_id = 112 OR department_id = 110;
DECLARE plsql_block VARCHAR2(500); BEGIN -- 從動態SQL塊呼叫 plsql_block := 'BEGIN raise_emp_salary(:cvalue, :cname, :amt); END;'; EXECUTE IMMEDIATE plsql_block USING 110, 'DEPARTMENT_ID', 10;
-- 從動態SQL語句呼叫 --EXECUTE IMMEDIATE 'BEGIN raise_emp_salary(:cvalue, :cname, :amt); END;' --USING 112, 'EMPLOYEE_ID', 10; END;
1次執行:
2次執行
|
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1082050/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL隱碼攻擊原理是什麼?如何防範SQL隱碼攻擊?SQL
- SQL隱碼攻擊SQL
- SQL隱碼攻擊(pikachu)SQL
- SQL隱碼攻擊方法SQL
- MYSQL SQL隱碼攻擊MySql
- WEB三大攻擊之—SQL隱碼攻擊與防護WebSQL
- DVWA-SQL Injection(SQL隱碼攻擊)SQL
- SQL隱碼攻擊導圖SQL
- SQL隱碼攻擊語句SQL
- pikachu-SQL隱碼攻擊SQL
- SQL隱碼攻擊總結SQL
- XSS與SQL隱碼攻擊SQL
- 預防SQL隱碼攻擊筆記SQL筆記
- 前端如何預防SQL隱碼攻擊?前端SQL
- SQL隱碼攻擊:Sqlmap初體驗SQL
- 【網路安全】什麼是SQL隱碼攻擊漏洞?SQL隱碼攻擊的特點!SQL
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]JavaWebSQL
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]JavaWebSQL
- SQL隱碼攻擊關聯分析SQL
- Mybatis如何防止SQL隱碼攻擊MyBatisSQL
- Nacos Derby SQL隱碼攻擊漏洞SQL
- MSSQL SQL隱碼攻擊 總結SQL
- Oracle SQL隱碼攻擊 總結OracleSQL
- SQL隱碼攻擊-堆疊注入SQL
- SQL隱碼攻擊基礎原理SQL
- 【網路安全入門】SQL隱碼攻擊是什麼?SQL隱碼攻擊危害有哪些?SQL
- Data-Hack SQL隱碼攻擊檢測SQL
- Java審計之SQL隱碼攻擊篇JavaSQL
- 如何做好防護SQL隱碼攻擊漏洞SQL
- 什麼是SQL隱碼攻擊(SQLi)SQL
- SQL隱碼攻擊讀寫檔案SQL
- Mura CMS processAsyncObject SQL隱碼攻擊漏洞ObjectSQL
- SQL隱碼攻擊速查表(上)SQL
- SQL隱碼攻擊——時間盲注SQL
- SQL隱碼攻擊基礎入門SQL
- SQL隱碼攻擊及如何解決SQL
- SQL隱碼攻擊預備知識-sql基礎SQL
- SQL隱碼攻擊之字元型和數字型注入SQL字元
- 軟體安全測試之SQL隱碼攻擊SQL