当前位置: 首页 > news >正文

做网站还得备案大企业网站建设多少钱

做网站还得备案,大企业网站建设多少钱,在线公司取名,爱网站文章目录 参考环境访问修饰符访问修饰符PHP 与访问修饰符 手写身份标识身份标识定义身份标识控制字符 NUL在 PHP 中如何表示空字符#xff1f; 通过空字符尝试构建包含非公共属性对象的序列化文本 空字符的传输控制字符的不可打印性结论另辟蹊径URL 字符编码将非 ASCII 字符文… 文章目录 参考环境访问修饰符访问修饰符PHP 与访问修饰符 手写身份标识身份标识定义身份标识控制字符 NUL在 PHP 中如何表示空字符 通过空字符尝试构建包含非公共属性对象的序列化文本 空字符的传输控制字符的不可打印性结论另辟蹊径URL 字符编码将非 ASCII 字符文本转换为 ASCII 字符文本去除语义将不可见字符如空格转换为可见文本 URL Encode 参考 项目描述搜索引擎Bing、GoogleAI 大模型文心一言、通义千问、讯飞星火认知大模型、ChatGPTPHP 手册PHP Manual 环境 项目描述PHP8.0.0PHP 编辑器PhpStorm 2023.1.1专业版 访问修饰符 访问修饰符 访问修饰符在面向对象编程中起着重要的作用它们提供了 对类的属性和方法的访问级别控制。访问修饰符能够为你的程序带来以下优点 封装性Encapsulation 访问修饰符允许将类的内部实现细节隐藏起来仅暴露必要的公有接口给外部使用。这样可以有效地封装数据和行为提高代码的可维护性和可重用性。 访问控制Access Control 通过访问修饰符可以控制类的成员对外部的可见性和可访问性。不同的访问修饰符可以限制属性和方法的访问范围只允许特定的代码段访问从而提供了更好的安全性和数据保护。 PHP 与访问修饰符 PHP 支持三种访问修饰符publicprotected 以及 private这些修饰符所提供的访问级别具体如下。 修饰符 (Modifier)访问级别 (Access Level)类内部 (Inside Class)子类 (In Subclass)外部 (Outside Class)public公有可访问可访问可访问protected受保护可访问可访问不可访问private私有可访问不可访问不可访问 注 在 PHP 中访问修饰符是可以省略的但这仅仅针对于类中的方法而言。默认情况下如果没有指定访问修饰符方法都将被视为公有成员。 手写身份标识 身份标识 在 PHP 中当对象被序列化时对象的 非公共属性的名称会被特殊处理以表示其可见性访问修饰符。对此请参考如下示例 ?phpclass MyClass {# 私有属性private $name RedHeart;# 受保护属性protected $nation China; }var_dump(serialize(new MyClass()));执行效果 string(82) O:7:MyClass:2:{s:13: MyClass name;s:8:RedHeart;s:9: * nation;s:5:China;}MyClass 类中的私有属性名称 name 在转化为序列化文本后成了 s:13: MyClass name;相比原先的 name 增加了两个空格实际上是 控制字符 NUL无法通过空格进行代替及所属类的名称 MyClass。 这样的处理方式是为了 在反序列化对象时能够正确地还原属性的可见性。当 PHP 在反序列化时遇到这些特殊的前缀PHP 会 知道如何正确地设置属性的可见性。公共属性不会有这种特殊处理它们在序列化后的文本中保持原始的属性名。 定义身份标识 身份标识即 对象的属性所使用的访问修饰符在序列化文本中的体现私有属性与受保护属性的身份标识分别是 NUL所属类的名称NUL 与 NUL*NUL 公有属性则无身份标识以与前两者相区分。 控制字符 NUL 控制字符 NUL 也被称为 空字符是 ASCII 表中的第一个字符其 十进制值 是 0。在 ASCII 表中控制字符是一系列 非打印字符用于控制硬件设备或通信协议的行为而 NUL 的主要作用是标记字符串的结束。 在 PHP 中如何表示空字符 在 PHP 中你可以通过转移字符 \0 表示空字符 NUL。但需要注意的是在 PHP 中转义字符仅有在 双引号 内才会被认为是转义字符若转义字符存在于 单引号 中则该转义字符将被视为普通字符。对此请参考如下示例 ?php# 位于单引号中的 “转义字符” var_dump(\0); var_dump(Hello\0World);# 位于双引号中的 转义字符 var_dump(\0); var_dump(Hello\0World);执行效果 string(2) \0 string(12) Hello\0World string(1) string(11) Hello World通过空字符尝试构建包含非公共属性对象的序列化文本 既然知道了如何在 PHP 中表示 空字符那么我们就能够通过这一特性来 手写不使用 serialize() 函数来获取需要使用到的 PHP 序列化文本 包含非公共属性对象的序列化文本。对此请参考如下示例 ?phpclass MyClass {}# 构造需要使用到的序列化文本 $serialize_text O:7:MyClass:2:{s:13: . \0MyClass\0 . name;s:8:RedHeart;s:9: . \0*\0 . nation;s:5:China;};# 对序列化文本执行反序列化操作 var_dump(unserialize($serialize_text));执行效果 object(MyClass)#1 (2) {[name:MyClass:private]string(8) RedHeart[nation:protected]string(5) China }由于序列化文本中的引号需要使用 双引号而该序列化文本中需要使用到的引号个数 较多若较少的话可以在字符串最外层使用双引号对字符串内部的双引号进行转义故在序列化文本最外侧使用了单引号。通过 拼接双引号包裹的含有转义字符的文本实现身份标识的书写。 空字符的传输 控制字符的不可打印性 在 ASCII 表中控制字符是一系列 非打印字符用于控制硬件设备或通信协议的行为。因为控制字符产生的本意并不是为了展示内容因此当你尝试将控制字符进行 复制粘贴 等操作时对于不同的环境可能会有不同的结果应具体分析。可能的情况如下 在一些文本编辑器中这些字符可能会显示为 特定的符号空格、 等或 完全不显示此时你连复制 ”控制字符“ 都没有可能。在一些终端或控制台应用中这些字符可能会直接 按照其原始的控制功能来执行。 结论 ?php# 尝试输出空字符 NUL var_dump(\0);# 将复制到的空字符 NUL 作为 ord 函数的参数进行输出 var_dump(ord( ));执行效果 在 PHP 编辑器 PHPStorm 中我得到 \0 的输出并尝试将其中的空字符复制并粘贴于 ord() 函数中以作为该函数的参数。 在尝试 两次第一次执行示例代码是为了获得空字符第二次则是为了获得 ord() 函数的输出结果 后得到上述界面蓝色部分即复制内容是空字符 NUL 在 PHPStorm 中的显示效果。ord() 函数能够得到某个字符对应的 ASCII 码此处的结果是 32对应的字符是可打印字符 空格。 所以结论是 空字符这类控制字符是无法通过复制粘贴这一操作进行传输的。 另辟蹊径 URL 字符编码 URL 字符编码是一套转换依据其功能主要有以下三点 将非 ASCII 字符文本转换为 ASCII 字符文本去除语义将不可见字符如空格转换为可见文本 将非 ASCII 字符文本转换为 ASCII 字符文本 URL 中的中文等非 ASCII 字符在 通过网络传输前 需要通过 URL 编码进行转换以使其符合 URL 的设计原则URL 基于 ASCII 字符集进行设计。 在 PHP 中可通过内置函数 urlencode() 将非 ASCII 文本转换为 URL 编码字符。对此请参考如下示例 ?phpvar_dump(urlencode(Hello World)); var_dump(urlencode(你好中国)); var_dump(urlencode(你好I am a space世界));执行效果 string(11) HelloWorld string(45) %E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%AD%E5%9B%BD string(48) %E4%BD%A0%E5%A5%BDIamaspace%E4%B8%96%E7%95%8C去除语义 URL 中的 特殊字符 需要通过 URL 字符编码来进行转换以使其 失去其在 URL 中的特殊含义。 举个栗子 查询字符串由 一个或多个参数 组成每个参数之间使用 符号 进行 分隔。如果查询字符串中的某一个参数中包含 符号请问 阁下如何让程序将这个 理解为参数中的内容而不是参数与参数之间的连接标识呢 此时URL 字符编码 去除语义 的作用就体现出来了。通过将参数中的 进行 URL 编码以使得程序不再将其作为参数与参数之间的连接符来进行看待而只是将其视为普通的文本内容。 具体而言 ?usernameRedHeartmyflagx这段查询字符串仅包含两个参数username 的参数值为 RedHeart而 myflag 的参数值为 x。 但实际上这段查询字符串将被程序理解为三个参数其中 username 的参数值为 RedHeart而 myflag 与 x 的参数值均为 空什么也没有。 解决方案 将参数中的具有 URL 语义的特殊字符 转换为其对应的 URL 编码 %26使 失去其语义即可。 ?usernameRedHeartmyflag%26x%26将不可见字符如空格转换为可见文本 空格和其他 空白字符 在 URL 中 不易阅读可能导致 混淆或误解。通过将空白字符转换为 可识别 的形式能够增强 URL 的 可读性及准确性。 注 在 URL 中空格将被转换为 而制表符将被转换为 %09。 URL Encode 在尝试利用 PHP 反序列化漏洞时往往需要使用到 URL。如果将 包含身份标识的序列化文本进行 URL 编码处理那么其中的 控制字符就能同 URL 一同转移了。对此请参考如下示例 网页源码文件 index.php 中的内容 ?phpclass MyClass {}# 尝试将 URL 中的查询字符串中的 X 参数的值进行反序列并将结果进行输出 var_dump(unserialize($_GET[X]));为了获得 URL 编码后的序列化文本我们可以使用如下两种方案 通过序列化构造的对象来获得序列化文本并将其进行 URL 编码处理 ?phpclass MyClass {private $name RedHeart;protected $nation China; }# 将序列化结果进行 URL 编码处理 var_dump(urlencode(serialize(new MyClass)));将构造的序列化文本进行 URL 编码处理 ?php# 构造需要使用到的序列化文本 $serialize_text O:7:MyClass:2:{s:13: . \0MyClass\0 . name;s:8:RedHeart;s:9: . \0*\0 . nation;s:5:China;};# 将构造的序列化文本进行 URL 编码处理 var_dump(urlencode($serialize_text));URL 编码处理后的序列化文本如下 O%3A7%3A%22MyClass%22%3A2%3A%7Bs%3A13%3A%22%00MyClass%00name%22%3Bs%3A8%3A%22RedHeart%22%3Bs%3A9%3A%22%00%2A%00nation%22%3Bs%3A5%3A%22China%22%3B%7D使用这段文本作为 X 参数的值并尝试通过浏览器访问 index.php 页面得到如下界面
http://www.zqtcl.cn/news/617405/

相关文章:

  • 一般做网站空间大概多少钱电商网站开发公司
  • 海报模板在线制作免费网站如何建设个人网站
  • 网站集群建设的意义如何优化推广网站
  • 怎么给公司做免费网站服装品牌网页设计图片
  • 中国通信建设协会网站新手建网站教程
  • 做网站页面的需要哪些技巧wordpress 网址导航
  • 如何做美食网站设计广州网页设计招聘
  • 中国商标网商标查询官方网站页面模板怎么添加文章
  • 建设基础化学网站的经验如何建设网站pdf下载
  • 外贸公司网站设计公司做网站能挣钱不
  • 免费网站ppt模板下载济南建设网站公司
  • 网站建设技术托管免费空间域名注册免备案
  • 威海住房建设部官方网站专科网站开发就业方向
  • 做外贸网站多少钱成都网页设计专业
  • 北京比较好的网站公司在线医生免费咨询
  • 免费的个人网站怎么做企业网站管理系统软件
  • 枣庄住房和城乡建设局网站如何注册国外域名
  • 满洲里建设局网站网页设计公司的目标客户有哪些
  • 英文书 影印版 网站开发怀化组织部网站
  • 网站建设领域的基本五大策略要学会网站细节
  • dede做英文网站优化cms建站系统哪个好
  • eclipse sdk做网站邯郸技术服务类
  • 汕头网站网站建设西安网约车租车公司哪家好
  • 网站空间域名维护协议网络推广软件平台
  • 昆明网站建设公司猎狐科技怎么样wordpress主题打不开
  • 网站推广入口服饰网站建设 e-idea
  • 长沙网站建设电话2个女人做暧暧网站
  • 手机手机端网站建设电子商务网站建设步骤一般为
  • 上海金瑞建设集团网站怎样登陆网站后台
  • 定西模板型网站建设网络架构和现实架构的差异