Files
ai-g3sb-backman2.0/utils/__pycache__/validators.cpython-312.pyc
T

118 lines
11 KiB
Plaintext
Raw Normal View History

2026-04-10 16:52:07 +08:00
Ë
9ˆØij'ã
ó.—dZddlZddlZddlmZmZmZeje«Z gd¢Z
gd¢Z de dee
ee ffd„Zde dee
e ffd „Zde dee fd
„Zdde d e dee
ee ffd „Zdde d e dee fd
„Z dde d e dee fd„Z dde d e de
defd„Zy)u
SQL 验�工具集
éN)ÚTupleÚListÚDict)ÚDROPÚDELETEÚUPDATEÚINSERTÚALTERÚTRUNCATEÚCREATEz
DROP DATABASEz
DROP TABLEz
DROP INDEXÚGRANTÚREVOKEÚPURGEÚFLUSHÚKILL)5ÚSELECTÚWITHÚFROMÚWHEREÚJOINz LEFT JOINz
RIGHT JOINz
INNER JOINz
OUTER JOINÚONÚUSINGzGROUP BYÚHAVINGzORDER BYÚLIMITÚOFFSETÚUNIONz UNION ALLÚEXCEPTÚ INTERSECTÚASÚCASEÚWHENÚTHENÚELSEÚENDÚCOUNTÚSUMÚAVGÚMINÚMAXÚDISTINCTÚANDÚORÚNOTÚINÚEXISTSÚBETWEENÚLIKEzIS NULLz IS NOT NULLÚCASTÚCOALESCEÚNULLIFÚIFNULLÚDATEÚTIMEÚ TIMESTAMPÚEXTRACTÚ DATE_FORMATÚ STR_TO_DATEÚ CURRENT_DATEÚCURRENT_TIMESTAMPÚsqlÚreturncó—|j«}g}tD]E}dtj|«zdz}tj||«sŒ5|j |«ŒGt
|«dk(}|stjd|›�«||fS)u¡
检查SQL是�包��险�作
Args:
sql: SQL语�(大�写��感)
Returns:
(是�安全, �险关键�列表)
z\bru检测到å�±é™©æ“�作: ) ÚupperÚDANGEROUS_KEYWORDSÚreÚescapeÚsearchÚappendÚlenÚloggerÚwarning)r>Ú sql_upperÚ
found_dangersÚkeywordÚpatternÚis_safes úMC:\Users\24019\Desktop\backman-camel\text2sql_agent_camel\utils\validators.pyÚcheck_dangerous_operationsrP s…€ð— ‘ “ €IØ€Mç%ˆàœ"Ÿ)™) GÓ,Ñ,¨uÑ4ˆÜ
�9‰9�W˜iÕ (Ø × Ñ  Õ )ð &ô �-Ó  AÑ%€Gá Ü�‰Ð0°°Ð@ÔAà �MÐ !Ð!ócóì—|j«j«}|j«r|j«dnd}|dvrdd|›�fSt|«\}}|sdddj |«›�fSy) uw
验�SQL�是DML/DDL�作(仅�许SELECT等查询)
Returns:
(是�通过, 错误消�)
rÚ)r rrrr
r r Fuç¦�止的æ“�作: uSQL包å�«å�±é™©æ“�作: ú, )TrS)ÚstriprAÚsplitrPÚjoin)r>rJÚ
first_wordrNÚdangerss rOÚvalidate_no_dmlrZ;s„€ð— ‘ “ ×!Ñ!Ó#€Ið*3¯©Ô):�—‘Ó" 1Ò%À€JØÐZÑZØÐ)¨*¨Ð6Ð6Ð6ä1°#Ó6Ñ€GˆWÙ ØÐ/°· ± ¸'Ó0BÐ/CÐDÐDÐDà rQcóÚ—dddddddœ}g}|j«}|j«D]<\}}tj||tj«sŒ,|j |«Œ>|S)u|
检查明显的SQL注入模�
Args:
sql: SQL语�
Returns:
�现的注入模�列表
zUNION\s+ALL\s+SELECTzUNION\s+SELECTz(--|\#|/\*).*SELECTz;\s*(DROP|DELETE|UPDATE|INSERT)z OR\s+['\"]?\s*1\s*['\"]?\s*=\s*1z 1\s*=\s*1)Úunion_all_injectionÚunion_injectionÚcomment_injectionÚsemicolon_injectionÚor_true_conditionÚ always_true)ÚlowerÚitemsrCrEÚ
IGNORECASErF)r>ÚpatternsÚfindingsÚ sql_lowerÚnamerMs rOÚcheck_sql_injection_patternsriPsk€ð 7Ø,Ø3ØAØ@Ø#ñ
€Hð€HØ— ‘ “ €Ià!Ÿ™Ö)‰
ˆˆgÜ
�9‰9�W˜c¤2§=¡=Õ 1Ø �O‰O˜DÕ !ð*ð €OrQÚdialectcó°‡—ddlm}mŠg} |||¬«}t|‰j«sdgfS|j
}|j jd«}|s7tˆfd„|D««}|r|jd«t|«dk(|fS|j
}t«} |D]‰}
t|
‰j«r| j|
j«Œ5t|
‰j«sŒL|
j } t| ‰j«sŒo| j| j«Œ‹|D]ß}
|
j#‰j$«rŒt|
‰j&«rŒ6t|
‰j«r'|
j} | | vsŒ]|jd| ›d �«Œst|
‰j(«sŒŠ|
j } t| ‰j«sŒ­| j} | | vsŒ¾|jd| ›d
|
j*›d �«Œá t|«dk(|fS#t,$r"}
t.j1d |
›�«Yd
}
~
Œ6d
}
~
wwxYw)uá
验���查询的GROUP BY正确性
检查:SELECT中的���字段是�都在GROUP BY中
Args:
sql: SQL语�
dialect: SQL方言
Returns:
(是�有效, 错误列表)
r©Ú parse_oneÚexp©rjTÚgroupc3óX•K—|]!}|j‰j«du–—Œ#y­w)N)ÚfindÚAggFunc)Ú.0Úexprrns €rOÚ <genexpr>z/validate_aggregation_groupby.<locals>.<genexpr>Œs+øèø€ðá(�Dð— ‘ ˜#Ÿ+™+Ó&¨dÔ2Ù(ùsƒ'*u)包å�«è�šå�ˆå‡½æ•°ä½†ç¼ºå°‘GROUP BYå­�å�¥u字段 'u"' 在SELECT中但ä¸�在GROUP BY中u
' (别å��为'u#') 在SELECT中但ä¸�在GROUP BY中uGROUP BY验è¯�异常: N)Úutils.sql_parserrmrnÚ
isinstanceÚSelectÚ expressionsÚargsÚgetÚanyrFrGÚsetÚColumnÚaddrhÚOrderedÚthisrrrsÚLiteralÚAliasÚaliasÚ ExceptionrHÚdebug)r>rjrmÚerrorsÚparsedÚ select_exprsÚgroup_byÚhas_aggÚgroup_by_exprsÚ
group_by_colsrur‚Úcol_nameÚerns @rOÚvalidate_aggregation_groupbyr‘msø€÷0à
€Fð?3Ù˜3¨Ô0ˆô˜& #§*¡*Ô-ؘ�8ˆOð×)Ñ)ˆ ð—;‘;—?‘? 7Ó+ˆÙäóá(óóˆGñØ—
‘
ÐIÔJÜ�v“; !Ñ# VÐ+Ð +à!×-Ñ-ˆô›ˆ
Û"ˆDܘ$ §
¡
Ô+Ø×!Ñ! $§)¡)Õ,ܘD #§+¡+Õ.à—y‘y�ܘd C§J¡JÕ/Ø!×%Ñ% d§i¡iÕ0ð#ó!ˆDà�y‰y˜Ÿ™Ô%Øô˜$ § ¡ Ô,Øô˜$ §
¡
Ô+ØŸ9™9�Ø =Ò0Ø—M‘MØ" 8 *Ð,NÐOõô˜D #§)¡)Õ,à—y‘y�ܘd C§J¡JÕ/Ø#Ÿy™y�HØ }Ò4ØŸ
™
Ø& x j°
¸d¿j¹j¸\ÐIlÐmõñ-!ô: ˆv‹;˜!Ñ ˜VÐ #Ð#øô ò3Ü� ‰ Ð-¨a¨SÐ1×2Ñ2ûð3úsI�#H*±AH*ÂA#H*Ã5"H*ÄA;H*Æ,H*Ç"H*Ç$H*Ç5$H*È* IÈ3IÉIcóº—ddlm}m}g} |||¬«}|j|j«D]w}|j
j
d«}|€0|j
j
d«}|�Œ>|jd«ŒPt||j«sŒg|jd«Œy |S#t$r#} tjd | ›�«Yd} ~ |Sd} ~ wwxYw)
už
检查JOIN�件是�完整
Args:
sql: SQL语�
dialect: SQL方言
Returns:
问题列表(空表示无问题)
rrlroÚonNÚusinguJOIN缺少ONæ�¡ä»¶uJOINçš„ONæ�¡ä»¶ä¸ºç©ºuJOINæ�¡ä»¶æ£€æŸ¥å¼‚常: )
rwrmrnÚfind_allÚJoinr{r|rFrxÚEmptyr†rHr‡)
r>rjrmrnÚissuesr‰rWÚ on_conditionr”r�s
rOÚcheck_join_conditionsršÂsÄ€÷0à
€Fð5Ù˜3¨Ô0ˆð—O‘O C§H¡HÖ-ˆDàŸ9™9Ÿ=™=¨Ó.ˆLØÐ#àŸ ™ Ÿ
™
 gÓ.�Ø‘=Ø—M‘MÐ"6Õ7ô˜l¨C¯I©IÕ6Ø—M‘MÐ"9Õ:ñ.ð €Møô ò5Ü� ‰ Ð/°¨sÐ3×4Ð4à €Mûð5ús$ŒA"B.Á/(B.ÂB.Â. CÂ7CÃCcó—ddlm}m}g} |||¬«}|jj d«}|r¢|j
D]“}|j } t| |j«sŒ&| j}