Web安全防护基础篇:HTML Injection - Reflected (GET)

2024-02-10 10:38

本文主要是介绍Web安全防护基础篇:HTML Injection - Reflected (GET),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现在大部分的网站数据提交用到了Form表单,而如果程序员在未对表单提交的数据进行验证时,会有那些危害性呢?

本文案例为Form表单的Get方式提交(Post提交也是同样的效果),分为安全等级为低等,中等,高等三个层次进行说明。


1:安全等级-低等(未进行任何字符处理)

例如:

 <form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="GET"><p><label for="firstname">First name:</label><br /><input type="text" id="firstname" name="firstname"></p><p><label for="lastname">Last name:</label><br /><input type="text" id="lastname" name="lastname"></p><button type="submit" name="form" value="submit">Go</button>  
</form>

对应的PHP展示代码为:

<?phpif(isset($_GET["firstname"]) && isset($_GET["lastname"])){   $firstname = $_GET["firstname"];$lastname = $_GET["lastname"];    if($firstname == "" or $lastname == ""){echo "<font color=\"red\">请输入必填的字段...</font>";       }else            { echo "Welcome " . $firstname . " --- " . $lastname;   }}
?>

注意:在表单提交没有对用户输入的数据进行处理,并且在echo 的时候没有处理就打印到页面,那如果用户在文本框中输入类似代码:

<a href=http://www.baidu.com>Click Me</a>

那展示到页面的结果将会是 一个跳转到百度的Click Me链接,这种常见的入侵手段危害有多大呢?

参考:论坛发帖,我在一些重要的文字中加入这种代码,编写一段获取浏览器Cookie的代码等等,是不是就可以获取到你浏览器当中一些隐私信息呢?




2:安全等级-中等( 初级的字符处理 )

对输入参数进行urldecode,并将特殊字符处理

urldecode($firstname)
urldecode($lastname)
str_replace("<", "&lt;", $input);
str_replace(">", "&gt;", $input);

如果在展示的时候按上面的处理方式处理了用户输入的值,那用户输入

<a href=http://www.baidu.com>Click Me</a>

在页面展示,还是

<a href=http://www.baidu.com>Click Me</a>

但是,我把对应的代码转成ASCII编码格式呢?

<a href=http://www.baidu.com>Click Me</a>
%3ca+href%3dhttp%3a%2f%2fwww.baidu.com%3eClick+Me%3c%2fa%3e

结果发现,在页面上输出的结果变成了,跳转到百度的链接,这就等于用户输入绕过了我的编码防范…



3:安全等级-高等(htmlspecialchars)

参考:https://www.zhihu.com/question/27646993



4:解决方案-MYSQLi

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name);$stmt->execute();$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {// do something with $row
}

在采用方案3中的编码处理后,使用MYSQLi 方式来处理对数据库的操作是较为安全的防御措施。但是,网络攻防无绝对,世界上并没有永远攻不破的系统,关键是要为此付出多少代价而已。


警告:本系列文章所有涉及到的技术均不可用于非法用途,仅供学习/安全防范参考,如有违背,后果自负!

这篇关于Web安全防护基础篇:HTML Injection - Reflected (GET)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/696879

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(