• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

总结常见web安全问题分享常见的12攻击类型与防御措施第一篇

php 搞代码 3年前 (2022-02-28) 25次浏览 已收录 0个评论

文章目录

1.明确web攻打的危害。

2.分享常见的3种攻打与对应的进攻办法

1.web攻打的危害。

web攻打有什么危害呢?
水平较轻微的攻打,或者会从你的网站上窃取到用户的信息。重大的web攻打能够删库,让网站瘫痪等等严重危害。

2.分享攻打类型:sql注入,xss,csrf攻打

在此先分享3种攻打类型:sql注入,XSS攻打,csrf攻打

2.1 sql注入
什么是sql注入?
原本用户传了个id参数过去。如果咱们没有预防的话,产生sql注入。
举个例子。用户传了个uid参数(用户id),个别状况下就会呈现,会传一个整数,比方:1

$uid = $_GET[‘uid’];//1
select * from member where id = $uid
这个sql没问题。
如果黑客成心穿uid = ‘1 or 1=1’
那么select * from member where id = 1 or 1=1;
就会查出所有用户的信息。这里简答举个例子,其实sql注入狠一点的还能造成更重大的问题。

在此分享两个进攻措施

1.转化思路:对用户的提交的参数进行严格的过滤。
比方uid参数,咱们进行整形转化。$uid = intval($_GET[‘uid’]);//1 or 1=1会转化为1。

框架中,用框架封装好的办法查问。不要本人写原生语句查问。框架底层会主动过滤参数,能够避免sql注入。如果有些场景要本人写原生语句时,本人肯定要过滤好参数。

2.应用mysql的预处理机制(也叫参数化查问)。
其实sql注入的基本问题是mysql执行语句时,是执行一条sql后间接返回数据的。这样子,只有sql有问题,就会呈现sql注入。如果拆开两条的话。

  1.而且一条有sql注入的sql语句,通过预处理后就会被拆成两条没有sql注入的语句。
  2.还能够有一次机会给mysql校验和本义。
  比方执行了第一句预处理的sql后(`id` = :ThinkBind_1_454319113_ ),mysql就晓得,你查的话是id字段,所以你第二条sql的数据,必须是数字。如果不是数字mysql就抛异样

上面以thinkphp为例子。

  
  这样子有问题的sql,被拆成两条sql独自执行,就不会呈现sql注入的问题。

比方:SELECT id,name FROM uf_member WHERE id = 12052 or 1 = 1

//拆成第一条:
  SELECT `id`,`name` FROM `uf_member` WHERE  `id` = :ThinkBind_1_454319113_

执行完第一条后,mysql会期待你参数的传入。 此时传入第二条sql(是一些参数)

//第二条:
 array(1) {
  ["ThinkBind_1_454319113_"]=>
  array(2) {
    [0]=>
    string(14) "12052 or 1 = 1"
    [1]=>
    int(1)
  }

即便是有sql注入问题,独自运行这条sql参数的话,也不会产生什么危害。

上面是一些演示的代码

<code class="php7">//没有进行预处理的版本,会被sql注入
header('content-type:text/html;charset=utf-8');
$username=$_POST['username'];
$psw=$_POST['psw'];
try {
    $pdo=new PDO('mysql:host=localhost;dbname=test','root','root');
    $sql="select * from user where username='{$username}' and password='{$psw}'";
    $stmt=$pdo->query($sql);//返回后果集中的行数echo 
    $stmt->rowCount();
} catch (Exception $e) {
    echo $e->getMessage();
}


//进行了预处理,能够避免sql注入
header('content-type:text/html;charset=utf-8');
$username=$_POST['username'];
$psw=$_POST['psw']; 
try {  
    $pdo=new PDO('mysql:host=localhost;dbname=test','root','root');  
    $sql="select * from user where username=? and password=?";  
    $stmt=$pdo->prepare($sql);  
    $stmt->execute(array($username,$psw));  
    echo $stmt->rowCount(); 
} catch (Exception $e) {  
    echo $e->getMessage(); 
}

2.2 XSS(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混同。所以个别称把跨站脚本攻打缩写为XSS。

相似于sql注入,相当于html注入。在提交给服务器的html中,注入一段脚本。
XSS 即(Cross Site Scripting)中文名称为:跨站脚本攻打。XSS的重点不在于跨站点,而在于脚本的执行。
那么XSS的原理是:歹意攻击者在web页面中会插入一些歹意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因而会达到歹意攻打用户的目标。那么XSS攻打最次要有如下分类:反射型、存储型、及 DOM-based型。 反射性和DOM-baseed型能够归类为非持久性XSS攻打。存储型能够归类为持久性XSS攻打。

举个例子,就好了解了
比方失常的用户名是张三李四啥的。如果黑客把用户名设置为“<script>while (true) alert(“this is xss”);}</script>”的话,在浏览器显示用户名的时候,会始终死循话弹出输入框。还有更重大的xss脚本能够入侵数据库等。

如果没有富文本编辑器的状况,能够应用转化的思维,用户htmlspecialchars函数,对数据进行转化。能够避免大部分xss攻打。但其实这个函数不能齐全防住xss。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:总结常见web安全问题分享常见的12攻击类型与防御措施第一篇

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址