PHP防止使用跨站脚本HTTP链接攻击

2015-7-18 22:02:21

PHP表单中需引起注重的地方?

$_SERVER["PHP_SELF"] 变量有可能会被黑客使用!

当黑 客使用跨网站脚本的HTTP链接来攻击时,$_SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径 后面的,因此$_SERVER["PHP_SELF"]的字符串就会包含HTTP链接后面的JavaScript程序代码。

XSS又叫 CSS (Cross-Site Script) ,跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

指定以下表单文件名为 "test_form.php":

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

现在,我们使用URL来指定提交地址 "http://www.w3cschool.cc/test_form.php",以上代码修改为如下所示:

<form method="post" action="test_form.php">

这样做就很好了。

但是,考虑到用户会在浏览器地址栏中输入以下地址:

http://www.w3cschool.cc/test_form.php/%22%3E%3Cscript%3Ealert(‘hacked‘)%3C/script%3E

In this case, the above code will be translated to:

<form method="post" action="test_form.php"/><script>alert(‘hacked‘)</script>

代码中添加了 script 标签,并添加了alert命令。 当页面载入时会执行该Javascript代码(用户会看到弹出框)。 这仅仅只是一个简单的实例来说明PHP_SELF变量会被黑客利用。

请注意, 任何JavaScript代码可以添加在<script>标签中! 黑客可以利用这点重定向页面到另外一台服务器的页面上,页面 代码文件中可以保护恶意代码,代码可以修改全局变量或者获取用户的表单数据,实例:


如何避免 $_SERVER["PHP_SELF"] 被利用?

$_SERVER["PHP_SELF"] 可以通过 htmlspecialchars() 函数来避免被利用。

form 代码如下所示:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert(‘hacked‘)&lt;/script&gt;">

尝试该漏洞失败!

时间: 2024-10-03 14:01:54

PHP防止使用跨站脚本HTTP链接攻击的相关文章

【Jsoup学习礼记】消除不受信任的HTML (来防止XSS攻击)

问题 在做网站的时候,经常会提供用户评论的功能.有些不怀好意的用户,会搞一些脚本到评论内容中,而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,此时需要清理该HTML,以避免跨站脚本cross-site scripting攻击(XSS). 方法 使用jsoup HTML Cleaner 方法进行清除,但需要指定一个可配置的 Whitelist. String unsafe = "<p><a href='http://example.com/' onclick='s

消除不受信任的HTML (来防止XSS攻击)

问题 在做网站的时候,经常会提供用户评论的功能.有些不怀好意的用户,会搞一些脚本到评论内容中,而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,此时需要清理该HTML,以避免跨站脚本cross-site scripting攻击(XSS). 方法 使用jsoup HTML Cleaner 方法进行清除,但需要指定一个可配置的 Whitelist. String unsafe = "<p><a href='http://example.com/' onclick='s

Jsoup简介——使用Java抓取网页数据

概述 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据.jsoup的主要功能如下: 1. 从一个URL,文件或字符串中解析HTML: 2. 使用DOM或CSS选择器来查找.取出数据: 3. 可操作HTML元素.属性.文本: jsoup是基于MIT协议发布的,可放心使用于商业项目. 关于Jsoul的更多介绍,请访问Jsoul的官网:http://jsoup.o

Jsoup一个简短的引论——采用Java抓取网页数据

转载请注明出处:http://blog.csdn.net/allen315410/article/details/40115479 概述 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套很省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据.jsoup的主要功能例如以下: 1. 从一个URL,文件或字符串中解析HTML: 2. 使用DOM或CSS选择器来查找.取出数据: 3. 可操作HTML元素.属性.文本. j

Jsoup解析Html中文文档

jsoup 简介Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTML 中攫取你所需的信息和 扩展 HTMLParser 对自定义标签的处理能力.但现在我已经不再使用 htmlparser 了,原因是 htmlparser 很少更新,但最重要的是有了 jsoup .jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.

jsoup Cookbook(中文版)--爬虫(java)

转载:http://www.open-open.com/jsoup/ 目录: 入门 解析和遍历一个html文档 输入 解析一个html字符串 解析一个body片断 根据一个url加载Document对象 根据一个文件加载Document对象 数据抽取 使用dom方法来遍历一个Document对象 使用选择器语法来查找元素 从元素集合抽取属性.文本和html内容 URL处理 程序示例:获取所有链接 数据修改 设置属性值 设置元素的html内容 设置元素的文本内容 html清理 消除不受信任的htm

Jsoup学习总结

Jsoup学习总结 摘要 Jsoup是一款比较好的Java版HTML解析器.可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. jSOUP主要功能 从一个URL,文件或字符串中解析HTML: 使用DOM或CSS选择器来查找.取出数据: 可操作HTML元素.属性.文本: 环境搭建 MAVEN依赖 <dependency> <groupId>org.jsoup</groupId>

2018-2019-2 20165204《网络对抗技术》 Exp9 Web安全基础

2018-2019-2 20165204<网络对抗技术> Exp9 Web安全基础 实践内容 SQL注入攻击 命令注入(Command Injection) 数字型SQL注入(Numeric SQL Injection) 日志欺骗(Log Spoofing) 字符串型注入(String SQL Injection) LAB: SQL Injection 数据库后门(Database Backdoors) XSS攻击 Phishing with XSS Stored XSS Attacks Re

Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字 . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程 (APU