web攻击方式和防御方法

时间:2021-08-08 00:25:24
在http请求报文中载入攻击代码,就能发起对web应用的攻击。通过url查询字段或者表单、http首部、cookie等途径吧攻击代码传入,若这时web应用存在安全漏洞,那内部信息就会遭到窃取!

对web的攻击模式有两种:
  1. 主动攻击(主动攻击server)
  2. 被动攻击(上传木马程序,用户訪问时触发http陷阱)


实施的安全策略主要分为两步:
  1. client验证
  2. 服务端验证(输入值验证。输出值转义)

两种基本的攻击方式
1.SQL注入攻击(php防止方法是使用mysqli_real_escape_string或者addslashes进行输入数据的转义)
2.XSS攻击(运行js代码获取用户的cookie等信息。进行验证。使用strip_tags和htmlspecialchars或者htmlentities)


sql攻击破解

<?

php

 $clean = array();

$mysql = array();



$clean['last_name'] = "O'Reilly";

$mysql['last_name'] = mysql_real_escape_string($clean['last_name']);



$sql = "INSERT

      INTO   user (last_name)

      VALUES ('{$mysql['last_name']}')";

 ?>


mysqli_real_escape_string

(PHP 5)

mysqli::real_escape_string -- mysqli_real_escape_string — Escapes
special characters in a string for use in an SQL statement, taking into account the current charset of the connection

尽量使用为你的数据库设计的转义函数。

假设没有,使用函数addslashes()是终于的比較好的方法。

string addslashes ( string $str )

返回字符串。该字符串为了数据库查询语句等的须要在某些字符前加上了反斜线。

这些字符是单引號(')、双引號(")、反斜线(\)与
   NUL( NULL 字符)。



htmlspecialchars仅仅是将下列的特殊字符转换成实体。htmlentities是将全部的有实体的html标签转换成相应的实体
  • '&' (ampersand) becomes '&amp;'
  • '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
  • "'" (single quote) becomes ''' (or &apos;) only when ENT_QUOTES is
    set.
  • '<' (less than) becomes '&lt;'
  • '>' (greater than) becomes '&gt;'

防止xss攻击

//这是一个有xss攻击的php代码xss.php
<?

php

if (isset($_POST['name'])){
//     $str = trim($_POST['name']);  //清理空格
//     $str = strip_tags($str);   //去除html标签
//     $str = htmlspecialchars($str);   //将字符串内容转化成html实体
//     $str = addslashes($str);
//     echo $str;
echo $_POST['name'];
}
setcookie("aaa",'bbb');
?>
<form method="post" action="">
<input name="name" type="text" width="200">
<input type="submit" value="提交" >
</form>


当我訪问该页面,而且输入框中输入<script>alert(document.cookie);</script>。以下是原始的页面
web攻击方式和防御方法
web攻击方式和防御方法

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGQ5MDExMDV0ZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

点击提交之后
web攻击方式和防御方法

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGQ5MDExMDV0ZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

点击确定button
web攻击方式和防御方法
web攻击方式和防御方法
注意head内部已经有我们提交的js代码。

假设我们取消代码中的红色的凝视部分。再次运行
web攻击方式和防御方法
web攻击方式和防御方法