转义

1:case
1.1:sql注入
<form url="./" method = 'post'>
     sql注入:<input name ="escape">
     <input type="submit">
</form>
 
//php
$deleteSql = "DELETE FROM article where title = '".$_POST['escape']."'";
//php 接收zzzc ' or ' 1 = 1 后就会 执行DELETE FROM article where title = 'zzzc ' or ' 1 = 1'
 
处理:mysqli_real_escape_string (此处只说和转义有关的处理,详情见《白帽子说安全》注入攻击)
DELETE FROM article where title = 'zzzc \' or \' 1 = 1'
 
1.2:xss
比如 去网站评论时用户输入
<script>
      alert('恭喜你中了500万');
     setTimeout(window.location.href="https://www.zouzhenzhong.com",1000)
</script>
网站把用户信息存入数据库又不做转义处理。
这个被评论的页面以后就弹窗跳转啦。
 
处理:富文本白名单处理。(xss更多资料看《白帽子说安全》xss)
只允许<a>,<img>,<div>这些安全标签存在。而其他标签遇到<>一律转义&lt; &gt;(htmlspecialchars($string,ENT_QUOTES )) 处理
 
1.3 : 页面特殊字符 :展示 pk html标签
让下面代码 展示绿色的 111 <p style="color:green"> 222 </p>
如 去网站评论时用户输入
<p style="color:green">
     111
     <p style="color:green">
         222
     </p>
</p>
 
处理
<p style="color:green">
    111
         &lt;p style="color:green"&gt;
             222
         &lt;/p&gt;
</p>
 
1.4:反转义
比如:我在萌芽习惯 新建了一个习惯 今日学习&明日事项,微信服务通知我的时候就变成了:今日学习&amp;
 
处理
浏览器是会把&amp;转成&,但是对方接口不对转义字符解析时,自己就得单独处理。比如:给微信服务通知推送把&amp;通过函数转成&:今日学习&明日事项;而不是今日学习&amp;明日事项
 
2:转义应用
输入
  • 输入数据需要执行sql写操作时,用mysqli_real_escape_string 对 ' " \ 转义。(<>&不在这一层转义,富文本直接存储。框架都会在数据库底层对写操作进行类似封装)
  • 输入富文本对标签白名单(<script> <iframe> ...就不出现在白名单)直接存储,否则对<> 一律htmlspecialchars转义;
  • 页面需要展示代码时(程序员贴代码用),对<>&在录入代码块时就做(htmlspecialchars($string,ENT_QUOTES ))转义
输出
对方接口(非浏览器),不对字符转义时,在代码层面反转义好传过去。
 

转义-邹振忠的博客

原文链接:转义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值