Web开发风格指导原则

CVE-2023-22515漏洞复现:Confluence权限提升漏洞分析与实战防御 身份验证与授权机制是软件安全的基石,其核心原理在于确保只有合法用户才能访问特定资源。当机制存在缺陷时,可能导致严重的权限提升漏洞,攻击者无需凭证即可获取系统最高权限,技术价值在于深刻理解逻辑漏洞的成因与危害。这类漏洞常见于Web应用,尤其在系统初始化或状态管理环节。本文聚焦于Atlassian Confluence中的一个高危权限提升漏洞(CVE-2023-22515),该漏洞源于初始化状态验证缺陷,允许未授权攻击者创建管理员账户。通过复现其利用链,文章深入剖析了漏洞触发条件与影响,并提供了从网络隔离、补丁 阅读详情

转载自 http://www.chromium.org/developers/web-development-style-guide


Chromium中使用Javascriot,CSS和HTML作为前端实现。这被称为WebUI。 开发者需要遵循以下原则。

(译者注:这是前端开发都应该尊重的原则)


分离展示和内容

当你设计一个WebUI程序时,你应该将内容分为内容(HTML)和风格(CSS),控制逻辑行为的内容(JS)。

一种较为清晰的方法是使用MVC原则:

MVC ComponentWeb Component
 Model HTML
 View CSS
 Controller JS
 分离 内容 (HTML), 展示 (CSS) 和逻辑(JS) 到不同的文件中.

javascript

参阅 Google JavaScript Style Guide (注意其中关于浏览器兼容部分对Chrome WebUI不适用)

你可以使用 Closure linter来处理一些风格错误。

  • 使用 $('element-id')代替 document.getElementById
  • 使用单引号代替双引号来扩住所有字符串
  • 对单个逻辑块不使用括号
  • 不要使用const关键字,而使用var
  • 使用ES5的 getters和setters
    •  在JSDoc声明中使用 @type(替代@return or @param)
  • 对@-directives参见Annotating JavaScript for the Closure Compiler
  • 使用@override 替代 @inheritDoc.

CSS

参阅Google HTML/CSS style guide (同样,浏览器兼容部分对chrome WebUI不适用)


基本的


.raw-button,

.raw-button:hover,
.raw-button:active {
 -webkit-box-shadow: none;
 background-color: rgb(253, 123, 42);
 background-repeat: no-repeat;
 border: none;
 min-width: 0;
 padding: 1px 6px;
}

  • 一个选择子一行
  • 起始大括号要在最后一个选择子的末尾
  • 每项声明前空两个,一项声明一行,最后以分号结束
  • 尽可能使用段声明
  • 按照字母顺序排列属性
    •   -webkit属性应该放在最上面,按照字母顺序排列
  • 冒号后插入空格,分离属性和值
  • 不要为一个元素创建一个类,使用ID来代替
  • 对于长度值,不要给出0单位的值,如,  left: 0px;而应该是 left : 0;
  • 例外:在一组百分比列表中应该使用0%,如hsl(5, 0%, 90%) 或者在 @keyframe 规则中,如
  • @-webkit-keyframe animation-name {
    •   0% { /* beginning of animation */ }
  •   100% { /* end of animation */ }
  • }
  • 字符串一律使用单引号
  • 类的名字使用'-'分割
  • 时间长度若小于1秒,使用毫秒单位,如
    • -webkit-transition: all 0.2s;
    • -webkit-transition: all 200ms;
  • 对于pseudo-element,使用两个冒号,如::after, ::before, ::-webkit-scrollbar

颜色

  • 尽可能使用颜色名(如red)来提高可读性
  • 使用rgb()和rgba(),传递十进制值来替代16进制

URLs

在URL中不要嵌入数据 .
    • background-image: url(data:image/jpeg;base64,...);
    • background-image: url('file/in/the/source/tree.jpg');


RTL

.suboption {
 -webkit-margin-start: 16px;
}


#save-button {
 color: #fff;
 left: 10px;
}

html[dir='rtl'] #save-button {
 right: 10px;
}

    • For the properties that WebKit currently supports, use the RTL-friendly properties:
      • x-left -> -webkit-x-start
      • x-right -> -webkit-x-end
      • Where x is either margin, padding or border
      • text-align: left -> text-align: start
      • text-align: right -> text-align: end
      • left/right: <length> when positioning will use the [dir] of the page, so if you set both left will apply when [dir='ltr'].
    • For properties that do not have RTL-friendly alternatives, use html[dir='rtl'] to specify the RTL version of said property.

    HTML

    See the Google HTML/CSS style guide.

    Head

    <!DOCTYPE HTML>
    <html i18n-values="dir:textdirection">
    <head>
     <meta charset="utf-8">
     <title i18n-content="myFeatureTitle"></title>
     <link rel="icon" href="feature.png">
     <link rel="stylesheet" href="feature.css">
     <script src="feature.js"></script>

    </head>
    …
    </html>
    • Specify <!DOCTYPE HTML>.
    • Set the dir attribute of the html element to the localized ‘textdirection’ value.
    • Specify the charset, UTF-8.
    • Link in image, icon and stylesheet resources.
      • Do not add inline styling to elements.
    • Include the appropriate JS scripts.
      • Do not add JS to element event handlers.

    Body

    <h3 i18n-content="autofillAddresses"></h3>
    <div class="settings-list">
     <list id="address-list"></list>
     <div>
       <button id="autofill-add-address" i18n-content="autofillAddAddress"></button>
     </div>
    </div>

    <if expr="pp_ifdef('chromeos')">
     <a href="
    https://www.google.com/support/chromeos/bin/answer.py?answer=142893 "
         target="_blank" i18n-content="helpButton"></a>
    </if>
    • Element IDs use dash-form.
    • For i18n-content use javaScriptCase.
    • Adhere to the 80-column limit.
      • Indent 4 spaces when wrapping a previous line.
      • If you linebreak after an opening tag you must linebreak before the closing tag.
    • Add 2 space indentation in each new block.
    • Localize all strings using i18n-content attribute.
    • Use double-quotes instead of single-quotes for all attributes.
    • Do not close single tags.
      • <input type="radio" />
    • Use the button element instead of <input type="button">.
    • Do not use <br>; place blocking elements (<div>) as appropriate.
    • Do not use spacing-only divs; set the margins on the surrounding elements.
    • Only use <table> elements when displaying tabular data.


    理解REST:构建现代Web服务的基石 REST本身不是一个协议(像HTTP或FTP那样),也不是一个具体的标准(像SOAP那样),而是一种软件架构风格或设计原则。它由Roy Fielding博士在其2000年的博士论文中首次提出,旨在为构建可伸缩、可靠、易于演化的分布式超媒体系统(如万维网本身)提供一组指导原则。指的是“资源”的表现形式。资源可以是任何事物(用户、订单、文章、图片等),它的表现形式可以是JSON、XML、HTML、纯文本或图片等。客户端通过操作资源的表现形式来与服务器交互。指的是应用程序在特定时间点的状态。 阅读详情

    相关推荐

    系统架构设计师笔记第2期:架构风格

    架构风格是在软件系统设计和开发中使用的一种指导原则或模式集合。它描述了系统的整体结构和组织方式,以及各个组件之间的交互方式。架构风格可以帮助开发人员在设计和实现软件系统时做出一些重要的决策,包括如何划分系统的不同模块、如何组织和管理数据、如何处理系统的并发性等。不同的架构风格强调不同的设计原则和目标。这些架构风格并不是互相排斥的,实际上,在设计复杂的软件系统时,可以结合多种架构风格来满足系统需求。选择适合的架构风格取决于系统的需求、可用技术和开发团队的经验等因素。

    Programming Talk 458

    HTML中的<!DOCTYPE html>和JavaScript中的strict mode

    网页设计中的几点说明,本文包括:的说明、JavaScript严格模式(strict mode)

    cnds123的专栏 2369

    【WinForm】用ChromiumWeb内核开发一个自用的浏览器

    需要一个自用的浏览器,最好是用ChromiumWeb内核快速开发,下面使用Visual Studio 开发工具新建一个桌面程序WinForm项目,实现一个基本上网浏览功能使用即可...

    1万+

    chromium之webui

    chromium中webui机制的学习

    蜗牛想飞翔 1761

    利用ArcGIS快速生成等高线边界,完成地形图拼图

    地形图边界一般在CAD中手动绘制,然而,一幅边缘复杂的地形图边界的绘制需要花费大量时间和精力,为了减少重复性工作,提高效率,用ArcGIS软件可以自动生成实测地形图的边界

    yl14774636230的博客 9068

    告别‘打架’的检测头:手把手教你用PyTorch实现YOLOv11解耦头(附完整代码)

    本文详细解析了YOLOv11解耦检测头的创新设计与PyTorch实现,通过解耦分类和回归任务,显著提升目标检测性能。文章包含完整的代码实现、架构设计解析及工程调优技巧,帮助开发者深入理解并应用这一先进技术。

    weixin_29031057的博客 301

    研究chromium内建web-ui实现的方法

    官方文档,只将原理。具体的实现(e.g. 加一个新web-ui),如果没思路,那基本不知道怎么去做。如果看到一个web-ui(e.g. chrome://user-actions/), 如果里面有动态显示文本的功能,我也想在自己的web-ui中加入这个功能,或者,我就想对着chrome://user-actions/做一个自己的web-ui出来。那该怎么做呢?最好的方法就是看git记录,因为提交都是一波一波的,看git记录如同看作者实际操作一样。

    博客标题不能为空 841

    手把手教你用LDR9201芯片DIY高性能Type-C耳机转接头(附电路图)

    本文详细介绍了基于LDR9201芯片DIY高性能Type-C耳机转接头的完整实战教程。从芯片选型、电路设计、元器件采购到焊接调试,手把手指导如何打造一个免驱兼容、支持高解析度音频且可通过EEPROM深度定制功能的专属转接头。重点解析了LDR9201作为高度集成的USB音频控制器SoC的优势,并提供了核心电路图与配置指南,适合电子爱好者和硬件开发者实践。

    jump7的博客 355

    理解 RESTful 风格:现代 Web 服务的基石

    RESTful 风格是一种基于 HTTP 协议的软件架构风格,由 Roy Fielding 提出,广泛应用于现代 Web 服务设计。其核心思想是将网络资源抽象为可通过 URI 标识的实体,客户端通过标准 HTTP 方法(如 GET、POST、PUT、DELETE)操作资源,服务器返回 JSON 或 XML 格式的响应。RESTful 风格的核心原则包括无状态性、统一接口、资源导向、可缓存性和分层系统,这些原则使得服务简单易用、可扩展性强、跨平台兼容且性能优化。设计 RESTful API 时,需合理设计 U

    慢慢 895

    H265/HEVC视频分层码流分析语义元素解释

    一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对H265/HEVC视频码流进行详细分析。 二、H265分层结构 H265的分层结构与H264类似,分为视频编码层(VCL:Video Code Layer)和网络抽象层(NAL

    weixin_43876729的博客 9431

    数据分析案例-车辆二氧化碳排放量数据可视化分析

    本实验数据集来源于Kaggle,该数据集捕获了车辆二氧化碳排放量随不同特征变化的详细信息。数据集取自加拿大政府官方开放数据网站。其中包含 7 年期间的数据。总共有 7385 行和 12 列。各列变量含义解释如下:Make:车辆的品牌或制造商。Model:车辆的具体车型名称。Vehicle Class:车辆的分类,如紧凑型、SUV等。Engine Size(L):车辆发动机的尺寸,以升为单位。Cylinders:车辆发动机的气缸数。

    m0_64336780的博客 1万+

    REST风格

    我们需要回顾一下Web发展的最初年代,从源头上讲讲REST是怎么得来的。 Web(万维网World Wide Web的简称)是个包罗万象的万花筒,不同的人从不同的角度观察,对于Web究竟是什么会得出大不相同的观点。作为Web开发者,我们需要从技术上来理解Web。 从技术架构层面上看,Web的技术架构包括了四个基石: URIHTTPHyperText(除了HTML外,也可以是带有超链接的X

    Asa_Prince的博客 1094

    管理类联考——逻辑——真题篇——按知识分类——综合推理

    29、某部门抽检了肉制品、白酒、乳制品、干果、蔬菜、水产品、饮料等﹖类商品共521种样品,发现其中合格样品515种,不合格样品6种。已知: (1)蔬菜、白酒中有2种不合格样品。 (2)肉制品、白酒、蔬菜、水产品中有5种不合格样品。 (3)蔬菜、乳制品、干果中有3种不合格样品。 根据上述信息,可以得出以下哪项? A. 乳制品中没有不合格样品。 B. 肉制品中没有不合格样品。 C. 蔬菜中没有不合格样品。 D. 白酒中没有不合格样品。 E. 水产品中没有不合格样品。 31~32题基于以下题干: 某中学举行田径运

    stqer的博客 2017

    漫淡Android开发与Web开发的渊源

    本文的主旨就是Web开发有很多先进的思想,在Android开发中就采用了很多,希望大家重视web技术,学会其中的思想,会有助于你设计程序。 先分享一下我的经历吧。 还记得刚毕业时就常听人说不想做web,有一种理由是做web要学很多东西,也有人觉得做web没技术含量,连个排序算都不用写,很不幸当时的我也觉得很有道理,而且Web又无厘头的跟Java绑定到一起,至少在我们当时的公司是这样的,从而

    登高而望远 2068

    OmniParser V2 和 OmniTool 让 AI 来控制 Windows 设备

    OmniParser V2 和 OmniTool 是由微软开发的一套工具,通过屏幕解析技术让 AI 能够理解和控制 Windows 设备。OmniParser V2 是一款数据解析工具,可以解读屏幕内容,并将内容传递给大模型OmniTool 则是一个运行 Windows Agent 的工具,提供 Windows 界面给 AI 操作。

    简简单单Onlinezuozuo 2730

    SAP SLT REODPS_REPL API 的使用介绍

    本文聚焦 SAP 数据复制生态中的 RODPS_REPL(常被误写为 REODPS_REPL),解析其作为 ODP(Operational Data Provisioning)标准接口的核心功能与应用场景。RODPS_REPL 是 SAP 提供的 ABAP 接口集合,支持从 ODP 上下文(如 ODP_SAPI、ODP_CDS)执行初始化装载和增量捕获,被 SAP BW、Datasphere 及第三方工具(如 Azure Data Factory、Qlik Replicate)广泛调用。 关键要点: 核心对

    2007 年 ~ 2025 年,深耕 SAP 技术 18 年 226

    RESTful开发风格

    restful

    qq_42603898的博客 931

    数学建模模型总结

    这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

    理解本真的 REST 架构风格

    本文是“深入探索 REST”专栏系列深度内容中的第二篇,它将带您领略 REST 架构的起源、与 Web 的关系、REST 架构的本质及特性,以及 REST 架构与其他架构风格之间的比较。 引子 在移动互联网、云计算迅猛发展的今天,作为一名 Web 开发者,如果您还没听说过“REST”这个 buzzword,显然已经落伍了。夸张点说,甚至“出了门都不好意思跟别人打招呼”。尽管如此,对于...

    weixin_30293079的博客 129

    文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

    主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

    WINCC7.3破解文件

    WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

    RESTful架构风格规范

    REST与RESTful介绍 REST翻译为表现层状态转移(Representational State Transfer, REST),是一种软件架构风格,是Roy Thomas Fielding在他2000年的博士论文中提出的,该结构风格提供一些指导原则和最优方法来帮助我创建可扩展的web服务 REST是应用于分布式系统组件设计的一套协调的约束,它可以带来更高性能和更可维护的体系结构 RESTful风格的API是遵循REST风格构建的API,它可以通过一套统一的接口为Web,IOS和Android提供

    qq_43521551的博客 1562

    理解本真的REST架构风格

    引子在移动互联网、云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过“REST”这个buzzword,显然已经落伍了。夸张点说,甚至“出了门都不好意思跟别人打招呼”。尽管如此,对于REST这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在“盲人摸象”的阶段。常常听到各种各样关于REST的说法,例如:有人说:“我们这套新的API决定不用Web Service(SOAP+WSDL)...

    博艺的技术专栏 289

    【转载】理解本真的REST架构风格

    2019独角兽企业重金招聘Python工程师标准>>> ...

    weixin_34128237的博客 87

    Restful交互风格

    Spring:用来管理bean;基于Restful实现页面请求交互功能。

    /*多学习 不油腻*/ 994

    转:理解本真的 REST 架构风格

    引子 在移动互联网、云计算迅猛发展的今天,作为一名 Web 开发者,如果您还没听说过“REST”这个 buzzword,显然已经落伍了。夸张点说,甚至“出了门都不好意思跟别人打招呼”。尽管如此,对于 REST 这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在“盲人摸象”的阶段。常常听到各种各样关于 REST 的说法,例如:有人说:“我们这套新的 API 决定不用 Web S...

    dcpxn64404的博客 305

    REST架构风格

    Web技术发展与REST的由来Web(万维网World Wide Web的简称)是个包罗万象的万花筒,不同的人从不同的角度观察,对于Web究竟是什么会得出大不相同的观点。作为Web开发者,我们需要从技术上来理解Web。从技术架构层面上看,Web的技术架构包括了四个基石:URI HTTP HyperText(除了HTML外,也可以是带有超链接的XML或JSON) MIME   这四个基石相互支撑,促使

    Howie Lee的博客 1131

    REST设计风格

    REST 设计风格 很多人会拿 REST 与 RPC 互相比较,其实,REST 无论是在思想上、概念上,还是使用范围上,与 RPC 都不尽相同,充其量只能算是有一些相似,应用会有一部分重合之处,但本质上并不是同一类型的东西。 REST 与 RPC 在思想上差异的核心是抽象的目标不一样,即面向资源的编程思想与面向过程的编程思想两者之间的区别。面向过程编程、面向对象编程大家想必听说过,但什么是面向资源编程?这个问题等介绍完 REST 的特征之后我们再回头细说。 而概念上的不同是指 REST 并不是一种远程服务调

    架构分享 大数据及机器学习分享 818
    上一篇: 创建Chromium WebUI接口
    下一篇: Blink: Chromium的新渲染引擎
    漂流的代码
    博客等级 码龄23年 188粉丝 99原创
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    个

    红包个数最小为10个

    元

    红包金额最低5元

    当前余额3.43元 前往充值 >
    需支付:10.00元
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付元
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值