`
zjut_xiongfeng
  • 浏览: 280147 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据安全检测

SQL 
阅读更多

 

--------------of_buildselectexpression-------------------------------

string  ls_value = '', ls_expression, ls_tmp, ls_column, ls_coltype
long ll_row, ll_rowcount

ll_rowcount = ids_cond.rowcount()
 
ls_column = adwc.describe(as_col + '.dbname')
if ls_column = '!' or ls_column = '?' or ls_column = '' then return '!'

ls_coltype = adwc.describe(as_col + '.coltype')
If ls_coltype='!' or ls_coltype='?' Then Return '!'
ls_coltype = Lower ( Left (ls_coltype, 5 ) )


ls_expression = ls_column + ' ' + as_opr + ' '

choose case as_opr
 case '= any'
  ls_expression = ''
 case 'is null', 'is not null'
  //do nothing
 case 'in', 'not in'
  if ll_rowcount < 2 then return '!'
  ls_value = "("
  for ll_row = 1 to ll_rowcount
   ls_tmp = ids_cond.getitemstring(ll_row, 'value')
   if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!'
    Choose Case ls_coltype
     Case "char(", "char", "date", "datet", "time", "times"
      ls_value += "'" + ls_tmp + "', "
     Case  Else
      ls_value += ls_tmp + ", "
    end choose     
  next
  ls_value = left(ls_value, len(ls_value) - 2) + ')'
  ls_expression += ls_value
 case 'like', 'not like'
  if ll_rowcount <> 1 then return '!'
   ls_tmp = ids_cond.getitemstring(1, 'value')
   if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!' 
    Choose Case ls_coltype
     Case "char(", "char"   
      ls_expression += "'%" + ls_tmp + "%'"
     case else
      ls_expression = '!'
    end choose    
 case else
  if ll_rowcount <> 1 then return '!'
   ls_tmp = ids_cond.getitemstring(1, 'value')
   if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!' 
    Choose Case ls_coltype
     Case "char(", "char", "date", "datet", "time", "times"   
      ls_expression += "'" + ls_tmp + "'"
     case else
      ls_expression += ls_tmp
    end choose           
end choose

return ls_expression

------------------------of_buildselectexpression------------------------------

 

string  ls_value = '', ls_expression, ls_tmp, ls_column, ls_coltype
long ll_row, ll_rowcount

ll_rowcount = ids_cond.rowcount()
 
ls_column = adw.describe(as_col + '.dbname')
if ls_column = '!' or ls_column = '?' or ls_column = '' then return '!'

ls_coltype = adw.describe(as_col + '.coltype')
If ls_coltype='!' or ls_coltype='?' Then Return '!'
ls_coltype = Lower ( Left (ls_coltype, 5 ) )


ls_expression = ls_column + ' ' + as_opr + ' '

choose case as_opr
 case '= any'
  ls_expression = ''
 case 'is null', 'is not null'
  ls_expression += ls_column + ' ' + as_opr
 case 'in', 'not in'
  if ll_rowcount < 2 then return '!'
  ls_value = "("
  for ll_row = 1 to ll_rowcount
   ls_tmp = ids_cond.getitemstring(ll_row, 'value')
   if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!'
    Choose Case ls_coltype
     Case "char(", "char", "date", "datet", "time", "times"
      ls_value += "'" + ls_tmp + "', "
               Case  Else
//weng
//old     ls_value += "'" + ls_tmp + ", "
          ls_value += ls_tmp + ", "
//weng      
     end choose     
     next
  ls_value = left(ls_value, len(ls_value) - 2) + ')'
  ls_expression += ls_value
 case 'like', 'not like'
  if ll_rowcount <> 1 then return '!'
   ls_tmp = ids_cond.getitemstring(1, 'value')
   if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!' 
    Choose Case ls_coltype
     Case "char(", "char"   
      ls_expression += "'%" + ls_tmp + "%'"
     case else
      ls_expression = '!'
    end choose    
 case else
  if ll_rowcount <> 1 then return '!'
   ls_tmp = ids_cond.getitemstring(1, 'value')
   if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!' 
    Choose Case ls_coltype
     Case "char(", "char", "date", "datet", "time", "times"   
      ls_expression += "'" + ls_tmp + "'"
     case else
      ls_expression += ls_tmp
    end choose           
end choose

return ls_expression

--------------------of_buildselectimpossible---------------------------------------

string ls_column

If Len(Trim(as_col))=0 or IsNull(as_col) Then Return '!'
ls_column = adw.describe(ls_column + '.dbname')
if ls_column = '!' or ls_column = '?' or ls_column = '' then return '!'

return ls_column + ' is null and ' + ls_column + ' is not null '

 

-----------------------------of_buildselectimpossible--------------------------------------

string ls_column

If Len(Trim(as_col))=0 or IsNull(as_col) Then Return '!'
ls_column = adwc.describe(as_col + '.dbname')
if ls_column = '!' or ls_column = '?' or ls_column = '' then return '!'

return ls_column + ' is null and ' + ls_column + ' is not null '

---------------------------of_findcontrolcolumn-----------------------------------------

string ls_r
long ll_row

if isnull(as_dw) or len(trim(as_dw)) = 0 then return '!'
if not isvalid(ids_template) then return '!'

if ids_template.rowcount() < 1 then return '!'

ll_row = ids_template.find('datawindow = "' + as_dw + '"', 1, ids_template.rowcount())

if ll_row <= 0 then return '!'

ls_r = ids_template.getitemstring(ll_row, 'columnname')

if isnull(ls_r) or trim(ls_r) = '' then return '!'

return ls_r
-----------------------------of_finddw----------------------------------------------------

long ll_row

if isnull(as_dw) or len(trim(as_dw)) = 0 then return false

if not isvalid(ids_template) then return false

if ids_template.rowcount() < 1 then return false

ll_row = ids_template.find('datawindow = "' + as_dw + '"', 1, ids_template.rowcount())

if ll_row <= 0 then return false

return true

--------------------------------of_protect-------------------------------

string ls_cols[], ls_modify, ls_tmp
long ll_column, ll_tmp


of_getobjects(ls_cols, 'column', '*', false)
ll_column = upperbound(ls_cols)

for ll_tmp = 1 to ll_column
 ls_modify = ls_cols[ll_tmp] + ".Protect=1"
 ls_tmp = idw_requestor.describe(ls_cols[ll_tmp] + ".band")
 if ls_tmp <> '?' then
  ls_modify = idw_requestor.modify(ls_modify)
  if ls_modify <> '' then return FAILURE
 end if
next

return SUCCESS

-----------------------------------of_register-----------------------------

string ls_dw, ls_col, ls_opr, ls_user
integer li_rc
application app

app = GetApplication()
is_app = app.appname
is_user = as_user
ls_dw = idw_requestor.dataobject

idw_requestor.settransobject(atr)
itr = atr

if isnull(atr) or not isvalid(atr) then return FAILURE
if isnull(is_app) or isnull(as_user) or isnull(ls_dw) or trim(is_user) = '' then return FAILURE

//初始化数据窗口
ids_info = create n_ds
ids_info.dataobject = 'd_datasecurity_info'
ids_info.settransobject(atr)

ids_cond = create n_ds
ids_cond.dataobject = 'd_datasecurity_condition'
ids_cond.settransobject(atr)

ids_template = create n_ds
ids_template.dataobject = 'd_datasecurity_template'
ids_template.settransobject(atr)

//取出模板
if ids_template.retrieve(is_app) < 0 then return FAILURE

//如果在安全模板中就处理,否则就处理CHILDDATAWINDOW,然后返回,对本窗口不作任何控制
if not of_finddw(ls_dw) then
 is_act = ''
 return of_securechild()
end if

//取出控制列
ls_col= of_findcontrolcolumn(ls_dw)

//取控制列出错
if ls_col= '!' then
 return FAILURE
end if

//模板中有,信息中没有,认为不可见,则只需将is_act置为'不可见',DATAWINDOW也不可见
if ids_info.retrieve(is_app, ls_dw, is_user) < 0 then return FAILURE

if ids_info.rowcount() = 0 then
 is_act = '不可见'
else //取出用户信息
 is_act = trim(ids_info.getitemstring(1, 'allowedaction'))
 ls_opr = trim(ids_info.getitemstring(1, 'operator'))
 ls_user = trim(ids_info.getitemstring(1, 'username'))
 if isnull(ls_user) or len(trim(ls_user) ) = 0 then return FAILURE
 if isnull(ls_col) or isnull(is_act) or trim(ls_opr) = '' or trim(is_act) = '' then return FAILURE
end if

//明确不可见
if is_act = '不可见' then
 if of_setinvisible(idw_requestor, ls_col) = FAILURE then return FAILURE
 if of_protect() = FAILURE then return FAILURE
 return SUCCESS
end if

//如果是可见先保护再说
if is_act = '可见' then
 if of_protect() = FAILURE then return FAILURE
end if

//再往下就只有'可见'和'可改'了, 不论'可见'或'可改', 均应先改sql
//先把条件取出来
if ids_cond.retrieve(is_app, ls_dw, ls_user, ls_col) < 0 then return FAILURE

//在本函数中处理中DATAWINDOW,如果成功则继续处理CHILDDATAWINDOW
li_rc = of_beforeretrieve(idw_requestor, ls_col, ls_opr)
if li_rc = FAILURE then return FAILURE

li_rc = of_securechild()
return li_rc


--------------------------------------------of_securechild--------------------------------

//以下处理CHILDDATAWINDOW
string ls_cols[], ls_dddw, ls_act, ls_opr, ls_col, ls_user
long ll_column, ll_tmp
integer li_rc
datawindowchild ldwc

of_getobjects(ls_cols, 'column', '*', false)
ll_column = upperbound(ls_cols)

for ll_tmp = 1 to ll_column
 //先判断是否DDDW
 ls_dddw = idw_requestor.describe(ls_cols[ll_tmp] + ".dddw.name")
 if ls_dddw = '!' or ls_dddw = '?' or ls_dddw = '' then continue
 //是否在模板中
 if not of_finddw(ls_dddw) then continue 
 //取出列名信息
 ls_col = of_findcontrolcolumn(ls_dddw)
 if ls_col = '!' then return FAILURE
 //如果在模板中,应该能取出来
 if idw_requestor.getchild(ls_cols[ll_tmp], ldwc) = -1 then return FAILURE
 //SETTRANSOBJECT
 if ldwc.settransobject(itr) = -1 then return FAILURE
 //取出用户信息
 if ids_info.retrieve(is_app, ls_dddw, is_user) < 0 then return FAILURE

 if ids_info.rowcount() = 0 then
  ls_act = '不可见'
 else //取出用户信息
  ls_act = trim(ids_info.getitemstring(1, 'allowedaction'))
  ls_opr = trim(ids_info.getitemstring(1, 'operator'))
  ls_user = trim(ids_info.getitemstring(1, 'username'))
  if isnull(ls_col) or isnull(ls_act) or trim(ls_opr) = '' or trim(ls_act) = '' then return FAILURE
 end if

 //明确不可见
 if ls_act = '不可见' then
  if of_setinvisible(ldwc, ls_col) = FAILURE then return FAILURE
  continue
 end if
 if ids_cond.retrieve(is_app, ls_dddw, ls_user, ls_col) < 0 then return FAILURE
 if of_securechild(ldwc, ls_col, ls_opr) = FAILURE then return FAILURE
next

return SUCCESS
//结束

 

 

-----------------------------------------------of_securechild----------------------------------

string ls_select, ls_expression, ls_colexp, ls_oldfilter
long ll_row

//先构造过滤用的EXPRESSION
ls_expression = of_builddwexpression(adwc, as_col, as_opr)

if ls_expression = '!' then
 return FAILURE
else
 ls_oldfilter = adwc.describe('datawindow.table.filter') 
 if not (isnull(ls_oldfilter) or ls_oldfilter = '' or ls_oldfilter = '?' or ls_oldfilter = '!') then
  ls_expression = '(' + ls_oldfilter + ') and (' + ls_expression + ')'
 end if 
 if adwc.setfilter(ls_expression) <> 1 then 
  return FAILURE
 else
  adwc.filter()
  is_filter = ls_expression
 end if
end if

//对于可取到SQL并且非数据窗口计算字段的,还要修改SQL,修改成功当然好,不成功也没有关系因为FILTER成功了
ls_select = adwc.describe('datawindow.table.select')
ls_colexp = adwc.describe(as_col + '.expression')
if ls_select <> '!' and ls_select <> '?' and ls_select <> '' and ls_colexp = '!' then //可以修改select
 ls_expression = of_buildselectexpression(adwc, as_col, as_opr)
 if ls_expression <> '!' and ls_expression <> '' then
  ls_select = lower(ls_select)
  if pos(ls_select, 'where') > 0 then
   ls_select = ls_select + ' and ' + ls_expression
  else
   ls_select = ls_select + ' where ' + ls_expression
  end if
 end if
// if of_testsqlselect() then
  if adwc.modify('datawindow.table.select="' + ls_select + '"') <> '' then return FAILURE
// end if
 
end if

return SUCCESS
----------------------------------------of_setinvisible-----------------------------------------------------

string ls_expression, ls_select, ls_colexp

if isnull(as_col) or trim(as_col) = '' then return FAILURE
if not isvalid(adw) then return FAILURE

ls_expression = 'isnull(' + as_col + ') and not isnull(' +as_col + ')'

if adw.setfilter(ls_expression) <> 1 then
 return FAILURE
else
 adw.filter()
end if

//处理SQL,对于可取到SQL并且非数据窗口计算字段的,还要修改SQL,修改成功当然好,不成功也没有关系因为FILTER成功了
ls_select = adw.describe('datawindow.table.select')
ls_colexp = adw.describe(as_col + '.expression')
if ls_select <> '!' and ls_select <> '?' and ls_select <> '' and ls_colexp = '!' then //可以修改select
 ls_expression = of_buildselectimpossible(adw, as_col)

 ls_select = lower(ls_select)
 if pos(ls_select, 'where') > 0 then
  ls_expression = ls_select + ' and ' + ls_expression
 else
  ls_expression = ls_select + ' where ' + ls_expression
 end if
 
 adw.modify('datawindow.table.select="' + ls_expression + '"')
end if

return SUCCESS

-------------------------------------of_setinvisible-----------------------------------

string ls_expression, ls_select, ls_colexp

if isnull(as_col) or trim(as_col) = '' then return FAILURE
if not isvalid(adwc) then return FAILURE

ls_expression = 'isnull(' + as_col + ') and not isnull(' +as_col + ')'

if adwc.setfilter(ls_expression) <> 1 then
 return FAILURE
else
 adwc.filter()
end if

//处理SQL,对于可取到SQL并且非数据窗口计算字段的,还要修改SQL,修改成功当然好,不成功也没有关系因为FILTER成功了
ls_select = adwc.describe('datawindow.table.select')
ls_colexp = adwc.describe(as_col + '.expression')
if ls_select <> '!' and ls_select <> '?' and ls_select <> '' and (ls_colexp = '!' or ls_colexp = '?') then //可以修改select
 ls_expression = of_buildselectimpossible(adwc, as_col)

 ls_select = lower(ls_select)
 if pos(ls_select, 'where') > 0 then
  ls_expression = ls_select + ' and ' + ls_expression
 else
  ls_expression = ls_select + ' where ' + ls_expression
 end if 
 adwc.modify('datawindow.table.select="' + ls_expression + '"')
end if

return SUCCESS

分享到:
评论

相关推荐

    5G移动通信网数据安全监测预警技术要求.pdf

    5G移动通信网数据安全监测预警技术要求.pdf

    基于Android平台的数据安全检测研究.pdf

    基于Android平台的数据安全检测研究 本研究论文旨在探讨基于Android平台的数据安全检测问题,针对Android智能终端中存储的个人隐私数据,研究如何检测和防止恶意软件的窃取和泄露。论文首先介绍了Android智能终端的...

    零信任架构在结构化数据安全检测中的集成.pptx

    本文将基于提供的文件信息,深入探讨零信任架构在结构化数据安全检测中的集成及其相关知识点。 ### 一、零信任架构的特征与原理 零信任架构的核心特征包括: - **无默认信任**:所有访问请求,无论来自内部还是...

    场景化政务大数据安全运营实践探索.pdf

    具体措施包括加强数据安全监测、对数据处理流程进行白名单化管理、监控数据供给和数据清洗加工过程,确保数据在整个生命周期内的安全。 通过实施这些政务大数据安全场景化实践,能够有效提升政务大数据的安全性,为...

    金融和政务数据安全治理最佳实践.pdf

    * 数据安全保护义务包括保护重要数据、加强数据安全风险评估、加强数据安全技术研究、加强数据安全标准体系建设、加强数据安全检测评估、认证服务等方面。 四、数据分类分级保护制度 * 数据分类分级保护制度是指...

    YDT3801-2020电信网和互联网数据安全风险评估实施方法.pdf

    2. 风险控制和监测:指在数据安全风险评估中,需要对数据安全风险进行控制和监测,以确保数据的安全和完整性。 3. 风险评估和报告:指在数据安全风险评估中,需要对数据安全风险进行评估和报告,以便于相关部门和...

    金融数据安全治理最佳实践.pdf

    8. 数据安全风险监测:对数据安全风险进行监测,发现数据安全风险和漏洞,并采取相应的补救措施。 9. 数据安全检查:对数据安全进行检查,确保数据安全符合相关规定和标准。 10. 数据安全法规遵守:遵守相关的数据...

    数据安全治理框架及实践.pdf

    国家建立数据安全制度,建立数据分级分类保护制度,建立集中统一、高效权威的数据安全风险评估、报告、信息共享、监测预警机制,建立数据安全应急处置机制,建立数据安全审查制度,明确数据安全保护义务,要求企业...

    从数据安全到业务安全.pdf

    数据安全是指保护数据不受未授权的访问、泄露、篡改、破坏和丢失的侵害。业务安全则是从商业角度出发,确保企业业务的连续性和有效性不被内外部威胁所破坏。从数据安全到业务安全,涉及到一系列技术、管理和策略方面...

    数据安全风险评估方法及实施指南(深圳).pdf

    随着信息技术的快速发展,数据安全已成为全球范围内的关注焦点。确保数据安全不仅涉及技术措施,还涉及法律法规的制定与执行。本文档《数据安全风险评估方法及实施指南(深圳).pdf》详细介绍了数据安全风险评估的...

    工业互联网数据安全技术研究.pdf

    这些技术手段包括但不限于数据安全管理、数据安全防护、数据包安全检测、大数据技术等。其中,工业数据存储介质的多样性、存储属地的分散性以及访问控制等技术在数据安全防护中占据核心地位。此外,结合人工智能、大...

    金融数据安全数据安全分级指南JRT 0197—2020.pdf

    金融数据安全 数据安全分级指南;本标准起草单位:中国人民银行科技司、中国银行保险监督管理委员会统计信息与风险监测部、国 家金融IC卡安全检测中心(银行卡检测中心)、深圳市长亮科技股份有限公司、中国银行保险...

    基于区块链的高速铁路监测数据安全存储方案.pdf

    综上所述,基于区块链的高速铁路监测数据安全存储方案提出了一种创新的存储模型和技术实现方式,能够有效提升高速铁路监测数据的安全性和可靠性。随着区块链技术的进一步发展和完善,未来有望在更广泛的领域得到推广...

    大数据下的数据安全

    在当前的大数据时代,数据安全成为了企业和组织面临的重大挑战。随着信息技术的迅猛发展,数据的流动性和使用价值得到了前所未有的释放,这在极大提升经济社会运行效率的同时,也对数据的安全保护提出了新的要求。 ...

    政务信息共享数据安全国家标准的应用实践研究.docx

    - 数据安全运营管理能力:建立持续的安全监测和响应机制,确保数据安全策略的有效执行。 4. 核心技术应用 - 数据脱敏技术:通过替换、加密等方式,降低敏感数据的可识别性,保护个人信息隐私。 - 用户实体行为...

    企业运营后台之数据安全.pdf

    这个议题来自于携程资深数据安全工程师挖土。数据安全是当前安全领域最为火热的话题之一,很多企业受困于敏感信息访问监控、预警、追溯能力的不足,在信息泄露事件发生时往往束手无策。 针对企业内部的后台系统的...

    大数据安全分析

    本文以企业入侵检测日志分析为场景来谈谈大数据安全。

    云计算中数据安全与隐私保护关键技术.pdf

    本文将讨论云计算中数据安全和隐私保护的关键技术,包括入侵检测、身份验证、访问控制、加密技术、数据备份和恢复等。这些技术可以有效地保护云计算用户数据的安全和隐私。 1. 入侵检测技术 入侵检测技术是根据...

    《数据安全法》解读(一).pptx

    基于《数据安全法》---企业如何做好数据安全防护 1.企业应设立数据安全负责人和管理机构,落实数据安全保护责任,尤其是重要数据所在企事业单位。...4.企业应建立健全数据安全风险监测和应急处置机制(第二十九条)。

Global site tag (gtag.js) - Google Analytics