‘壹’ web应用防火墙可以有效防止以下哪些攻击行为 sql注入攻击
防火墙对注入和xss实际上都不能从根本上进行防御.
注入和跨站漏洞虽然应用的原理完全不同,但是有一个共同的特点就是都是管理员对语句的过滤不严格造成的.所以想从根本上解决问题的话,就要从过滤语句着手,不要依靠防火墙.
‘贰’ 产品的web应用采取什么措施能防止sql注入攻击
避免SQL注入三大方法
http://jingyan..com/article/64d05a027aa30bde55f73b19.html
‘叁’ 如何防止sql注入 web.xml
注入攻击风险: 取决于类型和注射攻击的严重性,同类型的注射剂包括HTML,SQL,XML,LDAP和操作系统命令。 潜在的风险包括: 存储数据的丢失/被盗。 数据库损坏(S)。 通过网络钓鱼的用户信息被盗。
‘肆’ .net webservice如何防止sql注入
尽量增加过滤,在提交SQL参数时过滤一些非法字符
‘伍’ 如何测试WEB应用程序防止SQL注入攻击
WEB应用程序的安全测试,防止SQL注入攻击,下面举一些简单的例子加以解释。——Inder P Singh。
许多应用程序运用了某一类型的数据库。测试下的应用程序有一个接受用户输入的用户界面,这些输入值用来执行下列任务。
给用户显示相关的存储数据。例如,程序通过用户输入的登录信息检查用户凭证(权限),从而只显示相关的功能和数据。
将用户输入的数据存储到数据库中。例如,用户填写了一张表格并提交,程序立即将之存储到数据库中;从而,用户可以在本次会话和下次会话中获取这些数据。
一些用户输入值可能会被接下来程序将执行的SQL语句运用到,而程序有可能不会正确执行用户输入的值。如果是这样的话,蓄意用户可以向程序提供非法数据,这些数据接下来被运用到框架中并且用来在数据库中执行SQL语句。这就是SQL注入。该行为的结果令人鸣起警钟。
SQL注入可能导致以下结果:
用户可以以另一用户的身份登录到程序,甚至是管理员的身份。
用户可以看到其他用户的隐私信息,如其他用户的简介细节,交易细节。
用户可以修改应用程序配置信息以及其他用户的数据。
用户可以修改数据库的结构,甚至是删除应用数据库中的表格。
用户可以控制数据库服务器并且按照自己意愿随意执行命令。
因为允许SQL注入的结果是相当严重的,所以在应用程序的安全测试阶段应对SQL注入进行测试。通过对SQL注入技术有一个总体的概括,让我们来理解一些SQL注入的实际例子!
重点:SQL注入问题只能在测试环境中测试
若应用程序页面有登录功能,程序有可能使用如下所示的动态SQL语句。这条语句本应从用户表中返回至少一条用户详细信息作为结果,当SQL语句中含有输入的用户名和密码时。
SELECT * FROM Users WHERE User_Name = ‘” & strUserName & “‘ AND Password = ‘” & strPassword & “’;”
如果测试人员输入John作为用户名(用户名文本框),输入Smith作为密码(密码文本框),上述SQL语句就变成:
SELECT * FROM Users WHERE User_Name = ‘John’ AND Password = ‘Smith’
如果测试人员输入John’-作为用户名,不输入密码,那么SQL语句变成:
SELECT * FROM Users WHERE User_Name = ‘John’– AND Password = ‘’;
我们可以注意到,SQL语句中John后面的部分成为了注释。如果用户表中有一些用户用户名为“John”,那么程序能够允许测试人员以用户John的身份登录,这样,测试人员可以看到用户John的隐私信息。
如果测试人员不知道任何程序中已存在的用户该怎么办呢?在这种情况下,测试人员可以尝试相似的用户名像“admin”,“administrator”,“sysadmin”。如果这些用户名在数据库中都不存在,测试人员可以输入John’ or ‘x’=’x作为用户名,Smith’ or ‘x’=’x作为密码。那么SQL语句如以下所示:
SELECT * FROM Users WHERE User_Name = ‘John’ or ‘x’='x’ AND Password = ‘Smith’ or ‘x’=’x’;
因为‘x’=’x’这一条件总是成立的,结果集包含用户表中所有行。程序允许测试人员以用户表中第一个用户的身份登录进去。
重点:测试人员在尝试下列SQL注入之前应该请求拥有数据库管理员或者开发人员权限以备份有问题的表格。
如果测试人员输入John’; DROP table users_details;’—作为用户名,任意值作为密码,那么SQL语句如下所示:
SELECT * FROM Users WHERE User_Name = ‘John’; DROP table users_details;’ –‘ AND Password = ‘Smith’;
这条语句将造成表格“users_details”从数据库中永久删除。
虽然上述例子说明的是页面中登录功能上运用SQL注入技术,但是测试人员应在应用程序中所有接受用户输入的页面运用该技术测试,如搜索页面,反馈页面等等。
SQL注入可能出现在运用了SSL的程序中,即使是防火墙也不能防御SQL注入攻击。
本文中,我尽量以简单的形式解释SQL注入技术。再次强调,SQL注入只能在测试环境中测试,不能再开发环境,生产环境或者其他任何环境下测试。除了手工测试程序是否易受SQL注入攻击,我们还应该使用web vulnerability scanner(一款扫描工具)来检查SQL注入。
‘陆’ web 怎么防止sql数据库的注入
<%
Sub F_Sql()
Dim Q_Post,Q_Get,Q_In,Q_Inf,i
Q_In = "'|and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare|cast|is_srvrolemember|xp_cmdshell|net|drop"
Q_Inf = Split(Q_In , "|")
If Request.Form <> "" Then
For Each Q_Post In Request.Form
For i = 0 To Ubound(Q_Inf)
If InStr(LCase(Request.Form(Q_Post)) , Q_Inf(i)) <> 0 Then
Response.Write("请不要在参数中包含非法字符尝试注入")
Response.End()
End If
Next
Next
End If
If Request.QueryString <> "" Then
For Each Q_Get In Request.QueryString
For i = 0 To Ubound(Q_Inf)
If InStr(LCase(Request.QueryString(Q_Get)) , Q_Inf(i)) <> 0 Then
Response.Write("请不要在参数中包含非法字符尝试注入")
Response.End()
End If
Next
Next
End If
End Sub
F_Sql()
%>
‘柒’ web前端怎么防止代码注入攻击
三种方式:
一,HTML防注入。
一般的html注入都是在字符串中加入了html标签,用下JAVA代码可以去掉这部分代码。
代码如下,自己封装成方法即可。
String msge = "asdasdasdasd <div id="f">asdfsdf";
System.out.println(msge);
msge = msge.replace("&", "&");
msge = msge.replace("<", "<");
msge = msge.replace(" ", " ");
msge = msge.replace(">", ">");
msge = msge.replace(""", """);
msge = msge.replace("'", "&qpos;");
System.out.println(msge);
二、防SQL注入
最简单最容易的是限制用户输入。
简单点的就是不允许用户输入单引号 和 --,因为单引号号--在SQL中都是影响执行的。
但SQL注入是多方面的,防止的方法也有很多种。
1、地址栏禁止特殊字符防SQL注入
把特殊字符(如and、or、'、")都禁止提交就可以防止注入了。
2、php过滤html字符串,防止SQL注入
批量过滤post,get敏感数据
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
数据过滤函数
function stripslashes_array(&$array) {
while(list($key,$var) = each($array)) {
if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || ''.intval($key) == "$key")) {
if (is_string($var)) {
$array[$key] = stripslashes($var);
}
if (is_array($var)) {
$array[$key] = stripslashes_array($var);
}
}
}
return $array;
}
3、替换HTML尾标签
function lib_replace_end_tag($str)
{
if (empty($str)) return false;
$str = htmlspecialchars($str);
$str = str_replace( '/', "", $str);
$str = str_replace("\", "", $str);
$str = str_replace(">", "", $str);
$str = str_replace("<", "", $str);
$str = str_replace("<SCRIPT>", "", $str);
$str = str_replace("</SCRIPT>", "", $str);
$str = str_replace("<script>", "", $str);
$str = str_replace("</script>", "", $str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("&",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("<br />",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("css","'",$str);
$str=str_replace("CSS","'",$str);
return $str;
}
三、专业的事情交给专业的工具去做。
安装安全软件。例如,在服务器中安装“服务器安全狗”,可以设置防注入,防攻击的设置,只要设置好安全规则,就可以屏蔽大多数攻击入侵。
‘捌’ .net web网站如何防止sql注入
1、操作数据库时,最好使用参数化
2、实在要拼接sql的时候,对字符串类型,只要把里面的单引号替换成2个单引号;
其它之类,比如数值类型,在拼接之前,判断是否数值;比如DateTime,拼接之前判断是否日期
就不会有问题了
拼接sql有时是不可避免的,所以注意第2点(有时也会在存储过程里拼接动态sql
‘玖’ 如何防御web应用中的sql注入漏洞
建议腾讯电脑管家修复,系统漏洞经常被黑客利用传播恶意程序(如网页挂马),必须及时修复系统漏洞才能有效防止计算机在上网时被黑客入侵,不过如果安装了安全软件,并且漏洞介绍看起来不是那么严重的话,可以选择不修复。
Windows系统漏洞是指操作系统在开发过程中存在的技术缺陷,这些缺陷可能导致其他用户在未被授权的情况下非法访问或攻击计算机系统。因此,系统开发商一般每月都会发布最新的补丁用以修复新发现的漏洞。目前,腾讯电脑管家支持修复Windows操作系统漏洞和部分第三方软件漏洞。