PHP防XSS攻击

防XSS攻击

什么是XSS攻击

代码实例:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>XSS原理重现</title> </head> <body> <form action="" method="get"> <input type="text" name="xss\_input"> <input type="submit"> </form> <hr> <?php $xss = $\_GET\['xss\_input'\]; echo '你输入的字符为<br>'.$xss; // echo '你输入的字符为<br>'."<script>alert('xss')</script>"; ?> </body> </html>

注意:如果要表单提交数据到自己页面,action就设置为空

如果我们在表单中输入的是"<script>alert('xss')</script>",那么,我们接收到的结果就是

echo '你输入的字符为<br>'."<script>alert('xss')</script>";

于是就弹出了alert框,相当于就修改了程序。除了这些,还能制造其他麻烦,刷新或重定向,损坏网页或表单,窃取cookie,AJAX(XMLHttpRequest)。

注意:有些浏览器自身可以识别简单的XSS攻击字符串,从而阻止简单的XSS攻击;例如chrom,我在chrom中做实验的时候,就会自动阻止,但猎豹浏览浏览器就不行。

XSS(Cross Site Scripting)攻击的全称是跨站脚本攻击,跨站脚本攻击的方式是恶意攻击者在网页中嵌入恶意脚本程序,当用户打开网页的时候脚本程序便在客户端执行,盗取客户的cookie及用户名和密码,下载执行病毒及木马程序,甚至获得客户端的admin权限等。

预防XSS攻击

从根本上说,解决办法是消除网站的XSS漏洞,这就需要网站开发者运用转义安全字符等手段,始终把安全放在心上。

简单点,就是过滤从表单提交来的数据,使用php过滤函数就可以达到很好的目的。

htmlspecialchars() 函数

代码实例:

<?php   if (isset($\_POST\['name'\])){       $str = trim($\_POST\['name'\]);  //清理空格     $str = strip\_tags($str);   //过滤html标签     $str = htmlspecialchars($str);   //将字符内容转化为html实体     $str = addslashes($str);  //防止SQL注入     echo $str;   }   ?>  

<form method="post" action="">  

<input name="name" type="text">  

<input type="submit" value="提交" >

</form> 

htmlspecialchars() 函数相当于单引号的功能,不会进行解释,你输入什么就是什么,和防SQL注入很类似。

函数详解:http://www.runoob.com/php/func-string-htmlspecialchars.html

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )