劣质的PHP代码简化

代码如下:

<?
echo("<p>search results for query:").
$_GET['query'].".</p>";
?>

这段代码的主要问题在于它把用户提交的数据直接显示到了网页上,从而产生XSS漏洞。其实有很多方法可以填补这个漏洞。那么,什么代码是我们想要的呢?


代码如下:

<?
echo("<p>search results for query:").
htmlspecialchars($_GET['query']).".</p>";
?>

这是最低要求。XSS漏洞用htmlspecialchars函数填补了,从而屏蔽了非法字符。


代码如下:

<?php
if(isset($_GET['query']))
echo'<p>search results for query:',
htmlspecialchars($_GET['query'],ENT_QUOTES).'.</p>';
?>

能写出这样代码的人应该是我想要录用的人了:
*<?被替换成了<?php,这样更符合XML规范。
*在输出$_GET['query']值前先判断它是否为空。
*echo命令中多余的括号被去掉了。
*字符串用单引号限定,从而节省了PHP从字符串中搜索可替换的变量的时间。
*用逗号代替句号,节省了echo的时间。
*将ENT_QUOTES标识传递给htmlspecialchars函数,从而保证单引号也会被转义,虽然这并不是最主要的,但也算是一个良好的习惯

(0)

相关推荐

  • 劣质的PHP代码简化

    复制代码 代码如下: <? echo("<p>search results for query:"). $_GET['query'].".</p>"; ?> 这段代码的主要问题在于它把用户提交的数据直接显示到了网页上,从而产生XSS漏洞.其实有很多方法可以填补这个漏洞.那么,什么代码是我们想要的呢? 复制代码 代码如下: <? echo("<p>search results for query:&quo

  • JavaScript代码简化技巧实例解析

    函数式编程可以使您的代码更简单.简单意味着代码易于阅读和理解,可测试和可维护. 在本文中,我描述了一些函数式编程(FP)技巧,您可以使用它们来简化代码,从而使代码更好. 摆脱临时变量和不变性原则 函数式编程倾向于不变性,这种不变性原则意味着在初始化变量之后不会更改它们的值.同样,创建对象或字符串后,您也无需对其进行突变. 如果使用JavaScript编程,则所有变量定义都应使用 const.对于正在阅读您的代码的任何人,常量定义都可以让您高枕无忧:它保证永远不会重新分配变量,因为重新分配是不可能

  • 尽可能写"友好"的"Javascript"代码

    在Search Engine的robot搜索时,针对的type,text/html此类"文本"的友好度是最高的(现阶段text/xml除外),而text/javascript此类的友好度不理想,如果robot还要判断DHTML代码的话,那这个复杂度也是较高,而且划不来 因此,在DHTML编程时,如果要提升代码的友好度.采用的方法,较好的方法是"尽可能是把DHTML的代码简化成没有HTML的代码".这句话如何理解? e.g: 一个javascript menu. 方法

  • 使用jQuery简化Ajax开发

    学习 jQuery 基本原理,探索其特性和功能,执行一些常见的 Ajax 任务并掌握如何使用插件扩展 jQuery. jQuery 是什么? jQuery 由 John Resig 创建于 2006 年初,对于任何使用 JavaScript 代码的程序员来说,它是一个非常有用的 JavaScript 库.无论您是刚刚接触 JavaScript 语言,并且希望获得一个能解决文档对象模型(Document Object Model,DOM)脚本和 Ajax 开发中一些复杂问题的库,还是作为一个厌倦了

  • 实例:尽可能写友好的Javascript代码

    在Search Engine的robot搜索时,针对的type,text/html此类"文本"的友好度是最高的(现阶段text/xml除外),而text/javascript此类的友好度不理想,如果robot还要判断DHTML代码的话,那这个复杂度也是较高,而且划不来,因此,在DHTML编程时,如果要提升代码的友好度.采用的方法,较好的方法是"尽可能是把DHTML的代码简化成没有HTML的代码".这句话如何理解? e.g: 一个javascript menu.  方

  • 用jQuery简化Ajax开发实现方法第1/2页

    一些简单的代码简化 下面是一个简单示例,它说明了 jQuery 对代码的影响.要执行一些真正简单和常见的任务,比方说为页面的某一区域中的每个链接附加一个单击(click)事件,您可以使用纯 JavaScript 代码和 DOM 脚本来实现,如 清单 1 所示. 清单 1 :没有使用 jQuery 的 DOM 脚本 复制代码 代码如下: var external_links = document.getElementById('external_links'); var links = exter

  • SpringBoot中快速实现邮箱发送代码解析

    前言 在许多企业级项目中,需要用到邮件发送的功能,如: 注册用户时需要邮箱发送验证 用户生日时发送邮件通知祝贺 发送邮件给用户等 创建工程导入依赖 Copy <!-- 邮箱发送依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency&g

  • nodejs代码执行绕过的一些技巧汇总

    在php中,eval代码执行是一个已经被玩烂了的话题,各种奇技淫巧用在php代码执行中来实现bypass.这篇文章主要讲一下nodejs中bypass的一些思路. 1. child_process 首先介绍一下nodejs中用来执行系统命令的模块child_process.Nodejs通过使用child_process模块来生成多个子进程来处理其他事物.在child_process中有七个方法它们分别为:execFileSync.spawnSync,execSync.fork.exec.exec

  • vue3中使用ref语法糖的示例代码

    自从引入组合式 API 的概念以来,一个主要的未解决的问题就是 ref 和响应式对象到底用哪个.响应式对象存在解构丢失响应性的问题,而 ref 需要到处使用 .value 则感觉很繁琐,并且在没有类型系统的帮助时很容易漏掉 .value 以上是官方原话,大概就是新的语法糖,可以让我们更方便的使用ref,而不用每次都写.value,大概就是把这样的代码,简化成这样 <script setup lang="ts"> import { ref } from 'vue' const

  • php技巧小结【推荐】

    1 如何定义linux和window通用的文件分隔符号 DIRECTORY_SEPARATOR : 目录分隔符,是定义php的内置常量.在调试机器上,在windows我们习惯性的使用"\"作为文件分隔符,但是在linux上系统不认识这个标识,于是就要引入这个php内置常量了:DIRECTORY_SEPARATOR 这样可以不用判断是在linux还是window系统下 2 PHP压缩与解压缩类 PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压

随机推荐