![]() |
1
7
对于其他人,请注意存储过程中的变量
不
扩展到代码中,即使它包含“或;”;,(不包括传递给
处决
,您将使用
Leo Moore,Karl,LFSR咨询公司
:
在没有评估的情况下实际运行取消链接。 |
![]() |
2
6
问题本身并不存在于数据库代码中,而是来自于执行这些语句的应用程序。 |
![]() |
3
4
White Listing *-长字符和短字符用于设置要接受的字符并将其过滤掉。 错误的方法是 Black List -黑名单哪些字符不被接受将导致麻烦,因为 你不能 跟上攻击者。通过ASCII表格、转义字符以及其他方式,可以绕过黑名单。 还有,这里有一个很好的例子 cheat sheet 在您的网站上试用。运行一些测试并尝试让事情失败。
|
![]() |
4
1
您没有为自己生成SQL,因此(在我看来)这看起来很安全。
|
![]() |
5
1
参考白名单。如果遵循某些其他条件,这是正常的。绝对有必要将所有输入分解为最简单的形式,因此不要只检查SQL查询名称、单引号等。它们可以使用其他字符集表示或编码,正是这些字符集构成了白名单的一部分,而不是SQL关键字本身。 我为一个特定的客户端工作,该客户端允许用户名/密码访问受保护的资源(这最终可以让您进入机场的安全部分!)。您可以通过输入“登录”字段绕过登录字段,然后从中构建SQL查询以检索用户帐户和密码。 问题是,客户已经花了20万英镑与一家似乎从未进行过web开发的供应商一起建立了网站。修复是另外一个60k,这是一个validate func(),它只检查union、select、have等关键字。当被问及他们对犬齿化/编码做了什么(我必须解释一下)时,是风滚草时间了。 开发公司和(昂贵的)项目被解雇了。 |
![]() |
6
-1
v_start_name. 检查字符串中是否有分号、注释字符、等于等。记住同时检查字符和十六进制值。请记住允许使用连字符的名称,例如,“Smith-Brown”可能是可以接受的,“Smith-Brown”可能是注射剂。 如果不熟悉SQL注入中的十六进制,以下是快速介绍 http://www.arejae.com/blog/sql-injection-attack-using-t-sql-and-hexadecimal.html http://www.securityfocus.com/infocus/1768 DECLARE v_start_name ALIAS FOR $1; r_player v_player%ROWTYPE; v_temp VARCHAR; BEGIN -- new pseudo code here if v_start_name has bad chars exit with error message -- end pseudo code here v_temp := v_start_name || ''%''; FOR r_player IN SELECT first_name, last_name FROM v_player WHERE last_name like v_temp LOOP RETURN NEXT r_player; END LOOP; RETURN; END; 当做 |
![]() |
7
-2
只需在你的v_start_名称上做一个替换,以摆脱“;”等
这将取代;使用blanks阻止SQL注入攻击 有关更多详细信息,请参阅 String Functions in PostgresSQL
|
![]() |
cagta · 如何使用此python脚本避免硬编码sql表达式? 7 年前 |
![]() |
John · MySQL php查询缺陷 7 年前 |
![]() |
Arunabh · 在不使用预处理语句的情况下摆脱SQL注入 7 年前 |