使 Web 表单输入在各种情况下安全的正确方法是什么?

发布于 2024-08-01 18:53:34 字数 178 浏览 6 评论 0原文

你们都认为什么是正确的(阅读:最灵活、松散耦合、最健壮等)方法来使来自 Web 的用户输入安全地用于 Web 应用程序的各个部分? 显然,我们可以为每个上下文(数据库、屏幕显示、保存在磁盘上等)使用各自的清理功能,但是是否有一些通用的“模式”来处理不安全的数据并使其安全? 是否有一种既定的方法来强制将其视为不安全,除非它得到适当的安全?

What do you all think is the correct (read: most flexible, loosely coupled, most robust, etc.) way to make user input from the web safe for use in various parts of a web application? Obviously we can just use the respective sanitization functions for each context (database, display on screen, save on disk, etc.), but is there some general "pattern" for handling unsafe data and making it safe? Is there an established way to enforce treating it as unsafe unless it is properly made safe?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你的心境我的脸 2024-08-08 18:53:34

您无法使用单一方法来清理所有用途的数据,但一个好的开始是:

过滤器 Var 接受许多不同类型的数据并剔除坏字符(例如您期望数字的非数字),并确保其格式有效(IP 地址)。

注意:电子邮件地址比 Filter_Var 的实现复杂得多,因此请 Google 寻找正确的函数。

在将内容输入到 Mysql 数据库之前,我不建议使用它一个数据库,无论如何,最好只使用准备好的 mysqli 语句。

You cannot use a single method to sanitize data for all uses, but a good start is:

Filter Var takes a number of different types of data and strips out bad characters (like non-digits for things you expect to be numbers), and makes sure it is of valid format (IP Addresses).

Note: Email Addresses are far more complicated than the Filter_Var's implementation, so Google around for the proper function.

I wouldn't suggest using this until you are about to input stuff into a database, and it is probably better to just use prepared mysqli statements anyway.

独孤求败 2024-08-08 18:53:34

正如已经说过的,当您担心网络安全时,需要考虑几件事。 以下是需要考虑的一些基本原则:

  • 避免将用户的直接输入集成到查询和变量中。

所以这意味着没有像 $variable = $_POST['user_input'] 这样的东西。 对于任何这样的情况,您都会将太多的控制权交给用户。 如果输入影响某些数据库查询,请始终使用白名单来验证用户输入。 如果查询针对用户名,请根据良好用户名列表进行验证。 不要简单地直接将用户输入放入查询中。

一个(可能的)例外是搜索字符串。 在这种情况下,您需要消毒,就这么简单。

  • 避免在不卫生的情况下存储用户输入。

如果用户正在为其他用户创建个人资料或上传信息,您必须有一个可接受的数据类型的白名单,或者删除任何可能是恶意的数据。 这不仅是为了您的系统的安全,也是为了您的其他用户(请参阅下一点)。

  • 切勿将用户的任何内容输出到浏览器而不剥离它。

这可能是安全顾问向我强调的最重要的事情。 您不能简单地依赖于在用户收到输入时对其进行清理。 如果您没有自己编写输出,请始终通过对任何 HTML 字符进行编码或将其包装在

<code>&lt;/code&gt; 标记中来确保输出无害。 如果用户 A 上传了一些 javascript,损害了查看该页面的任何其他用户,那么这只是开发人员的疏忽。 您晚上会睡得更好,因为您知道任何和所有用户输出都只能在所有浏览器上显示为文本。&lt;/plaintext&gt;&lt;/code&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; 绝不允许除用户之外的任何人控制表单。&lt;/li&gt; &lt;/ul&gt; &lt;p&gt; XSS 比它应该的更容易,并且在一个段落中描述起来确实很痛苦。 简而言之,每当您创建表单时,您都会向用户授予对处理表单数据的脚本的访问权限。 如果我窃取某人的会话或某人的 cookie,我现在可以与脚本对话,就像我在表单页面上一样。 我知道它期望的数据类型以及它将查找的变量名称。 我可以简单地将这些变量传递给它,就好像我是用户一样,脚本无法区分。&lt;/p&gt; &lt;p&gt; 以上不是卫生问题,而是用户验证问题。 我的最后一点与这个想法直接相关。&lt;/p&gt; &lt;ul&gt; &lt;li&gt; 避免使用 cookie 进行用户验证或角色验证。&lt;/li&gt; &lt;/ul&gt; &lt;p&gt; 如果我可以窃取用户的 cookie,那么我所做的可能不仅仅是让该用户度过糟糕的一天。 如果我注意到 cookie 有一个名为“member”的值,我可以很容易地将该值更改为“admin”。 也许它不起作用,但对于许多脚本,我可以立即访问任何管理级信息。&lt;/p&gt; &lt;p&gt; 简而言之,没有一种简单的方法来保护 Web 表单,但有一些基本原则可以简化您应该做的事情,从而减轻保护脚本的压力。&lt;/p&gt; &lt;p&gt; 再次采取良好措施:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;清理所有输入&lt;/li&gt; &lt;li&gt;对所有输出进行编码&lt;/li&gt; &lt;li&gt;根据严格的白名单验证用于执行的任何输入&lt;/li&gt; &lt;li&gt;确保输入来自实际用户&lt;/li&gt; &lt;li&gt;切勿使任何基于用户或角色的验证浏览器端/用户可修改&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;且绝不假设任何人的清单都是详尽或完美的。&lt;/p&gt;</code></plaintext></div><div class="wt-content wt-comment-content hide pptcOriginalCommentContent_19941373"><p>Like it's already been said, there are several things to take into account when you are concerned about web security. Here are some basic principals to take into account:</p><ul><li>Avoid direct input from users being integrated into queries and variables.</li></ul><p>So this means don't have something like <code>$variable = $_POST['user_input']</code>. For any situation like this, you are handing over too much control to the user. If the input affects some database query, always have whitelists to validate user input against. If the query is for a user name, validate against a list of good user names. Do NOT simply make a query with the user input dropped right in.</p><p>One (possible) exception is for a search string. In this case, you need to sanitize, simple as that.</p><ul><li>Avoid storing user input without sanitation.</li></ul><p>If the user is creating a profile or uploading info for other users, you have to either have a white-list of what kind of data is acceptable, or strip out anything that could be malicious. This not only for your system's security, but for your other users (See next point.)</p><ul><li>NEVER output anything from a user to the browser without stripping it.</li></ul><p>This is probably the most important thing that security consultants have emphasized to me. You can not simply rely on sanitizing input when it is received by the user. If you did not write the output yourself, always ensure that the output is innocuous by encoding any HTML characters or wrapping it in a <code>&lt;plaintext&gt;</code> tag. It is simple negligence on the part of the developer if user A uploads a bit of javascript that harms any other users that view that page. You will sleep better at night knowing that any and all user output can do nothing but appear as text on all browsers.</p><ul><li>Never allow anyone but the user control the form.</li></ul><p>XSS is easier than it should be and a real pain to cover in one paragraph. Simply put, whenever you create a form, you are giving users access to a script that will handle form data. If I steal someone's session or someone's cookie, I can now talk to the script as though I was on the form page. I know the type of data it expects and the variables names it will look for. I can simply pass it those variables as though I were the user and the script can't tell the difference.</p><p>The above is not a matter of sanitation but of user validation. My last point is directly related to this idea.</p><ul><li>Avoid using cookies for user validation or role validation.</li></ul><p>If I can steal a user's cookie, I may be able to do more than make that one user have a bad day. If I notice the cookie has a value called "member", I can very easily change that value to "admin". Maybe it won't work, but for many scripts, I would have instant access to any admin-level info.</p><p>Simply put, there is not one easy way to secure a web form, but there are basic principals that simplify what you should be doing, and thus eases the stress of securing your scripts.</p><p>Once more for good measure:</p><ul><li>Sanitize all input</li><li>Encode all output</li><li>Validate any input used for execution against a strict whitelist</li><li>Make sure the input is coming from the actual user</li><li>Never make any user or role-based validation browser-side/user-modifiable</li></ul><p>And never assume that any one person's list is exhaustive or perfect.</p></div><div class="wt-comments-tools"><span class="wt-info-model"><a href="javascript:" class="reply_btn" data-post_id="6577864" data-post_type="topic" data-post_author="3378" data-comment_id="19941373" data-comment_author="独孤求败"><i class="wjsp wjsp-huifu"></i> 回复 </a></span><span class="wt-info-model"><a href="javascript:" data-id="19941373" data-type="comment" data-count="" class="follow_btn"><i class="wjsp wjsp-wujiaoxing"></i> 收藏 0 </a></span><a class="wt-info-model topicOriginalBtn" data-long_text="1" data-content_class="pptcOriginalCommentContent_19941373" href="javascript:">原文 <i class="wjsp wjsp-xiangyou"></i></a></div></div></div><div class="wt-comments-item" id="comment-19941374"><div class="pull-left wt-avatar"><a href="https://www.wenjiangs.com/author/ur1ocqrf" rel="nofollow"><img src="https://www.wenjiangs.com/wp-content/uploads/avatar/q101801254326047.jpg" width="96" height="96"></a></div><div class="wt-comments-text"><div class="wt-comments-info"><span class="wt-info-model"><a href="https://www.wenjiangs.com/author/ur1ocqrf" rel="nofollow">冬天旳寂寞</a> </span><span class="wt-info-model">2024-08-08 18:53:34</span></div><div class="wt-content wt-comment-content"><p>我非常怀疑这样的通用框架是否存在并且比编程语言复杂。</p><p>不同层之间“安全”的定义如此不同</p><ul><li>输入字段验证、数字、日期、列表、邮政编码、车辆登记</li><li>跨字段验证</li><li>域验证 - 这是有效的抄表吗? 琼斯小姐这个月用了3亿英镑的电?</li><li>请求间验证 - 您真的在同一天为自己预订了两趟跨大西洋航班吗?</li><li>数据库一致性、外键验证</li><li>SQL 注入</li></ul><p>还要考虑发现违规时的操作。</p><ul><li>在 UI 层,我们几乎肯定不会只是悄悄地从数字字段中删除非数字字符,我们会引发 UI 错误</li><li>在 UI 中,我们可能希望验证<strong>所有</strong>字段并标记</li><li>其他层中的 每个单独错误我们可能会抛出异常或启动业务流程</li></ul><p>也许我错过了你的愿景? 您是否看到过任何与您的想法接近的东西?</p></div><div class="wt-content wt-comment-content hide pptcOriginalCommentContent_19941374"><p>I'm more than a little sceptical that such a general purpose framework could both exist and be less complex than a programming language.</p><p>The definition of "safe" is so different between different layers</p><ul><li>Input field validation, numbers, dates, lists, postcodes, vehicle registrations</li><li>Cross field validation</li><li>Domain validation - is that a valid meter reading? Miss Jones used £300,000,000 electricty this month?</li><li>Inter-request validation - are you really booking two transatlantic flights for yourself on the same day?</li><li>Database consistency, foreign key validation</li><li>SQL injection</li></ul><p>Also consider the actions when violations are discovered.</p><ul><li>At the UI layer we almost certainly do not just quietly strip out non-digit chras from numberic fields, we raise UI error</li><li>In the UI we probably want to validate <strong>all</strong> fields and flag each individual error</li><li>in other layers we might throw an exception or intiate a business process</li></ul><p>Perhaps I'm missing your vision? Have you seen anything that gets close to what you have in mind?</p></div><div class="wt-comments-tools"><span class="wt-info-model"><a href="javascript:" class="reply_btn" data-post_id="6577864" data-post_type="topic" data-post_author="3378" data-comment_id="19941374" data-comment_author="冬天旳寂寞"><i class="wjsp wjsp-huifu"></i> 回复 </a></span><span class="wt-info-model"><a href="javascript:" data-id="19941374" data-type="comment" data-count="" class="follow_btn"><i class="wjsp wjsp-wujiaoxing"></i> 收藏 0 </a></span><a class="wt-info-model topicOriginalBtn" data-long_text="1" data-content_class="pptcOriginalCommentContent_19941374" href="javascript:">原文 <i class="wjsp wjsp-xiangyou"></i></a></div></div></div><div class="loadMore">~没有更多了~</div></div></div></div><div class="fade modal" tabindex="-1" role="dialog" id="emailSubscribe"><div class="modal-dialog" role="document"><div class="esciBox"><h2>绑定邮箱获取回复消息</h2><p>由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!</p><div class="esciInput"><input type="email" class="form-control" v-model="user_email" placeholder="请输入您的邮箱"></div><div class="esciBtn"><button type="button" class="btn btn-primary" @click="bindEmail2">确认绑定</button></div></div></div></div></div></div><div class="col-md-4"><div class="side-topic-author"><div class="wt-container"><div class="mod-tit"><h3>关于作者</h3></div><div class="side-single-author-avatar"><a class="pull-left side-single-author-avatar-img" href="https://www.wenjiangs.com/author/onsecofp" rel="nofollow"><img src="https://www.wenjiangs.com/wp-content/uploads/avatar/q101800021912500.jpg" width="96" height="96"> </a><a class="side-single-author-avatar-txt" href="https://www.wenjiangs.com/author/onsecofp" rel="nofollow">我还不会笑</a><p>暂无简介</p></div><div class="author-tatol side-single-author-count"><div class="author-total-item"><span class="item-num"></span> <span class="item-name">文章</span></div><div class="author-total-item"><span class="item-num"></span> <span class="item-name">评论</span></div><div class="author-total-item"><span class="item-num">25</span> <span class="item-name">人气</span></div></div><div class="side-single-author-do"><a href="javascript:" data-id="3378" data-type="user" class="follow_btn btn btn-success"><i class="wjsp wjsp-jia2"></i> 关注 </a><a data-href="/message?accept=3378" target="_blank" class="btn btn-info"><i class="wjsp wjsp-xiaoxi"></i> 发私信</a></div></div></div><div class="side-group"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6502133150423173" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-6502133150423173" data-ad-slot="3893261597" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div><div class="side-img"><a href="/downclient" title="客户端下载"><img src="/public/img/sidebar.png"></a></div><div class="side-topic-author"><div class="wt-container"><div class="mod-tit"><h3>相关话题</h3></div><div class="mod-con"><ul class="side-topic-rand-list"><li><a href="https://www.wenjiangs.com/group/topic-6432575.html" title="自动 Word 邮件合并未按预期工作">自动 Word 邮件合并未按预期工作</a></li><li><a href="https://www.wenjiangs.com/group/topic-6576771.html" title="关于从使用块返回的最佳实践">关于从使用块返回的最佳实践</a></li><li><a href="https://www.wenjiangs.com/group/topic-6579331.html" title="我如何获得图表系列? 父母的父母的详细信息?">我如何获得图表系列? 父母的父母的详细信息?</a></li><li><a href="https://www.wenjiangs.com/group/topic-7226307.html" title="根据三角形获取屏幕坐标">根据三角形获取屏幕坐标</a></li><li><a href="https://www.wenjiangs.com/group/topic-6417602.html" title="如何设置树结构子节点的顺序">如何设置树结构子节点的顺序</a></li><li><a href="https://www.wenjiangs.com/group/topic-7226308.html" title="按大小排序地图">按大小排序地图</a></li><li><a href="https://www.wenjiangs.com/group/topic-6531736.html" title="在 MSAccess 中,在 nvarchar 中插入 NULL 失败">在 MSAccess 中,在 nvarchar 中插入 NULL 失败</a></li><li><a href="https://www.wenjiangs.com/group/topic-6432574.html" title="C++ 中的 GUID Linux GCC 应用程序">C++ 中的 GUID Linux GCC 应用程序</a></li><li><a href="https://www.wenjiangs.com/group/topic-6569480.html" title="如何使用 log4j 关闭日志记录?">如何使用 log4j 关闭日志记录?</a></li><li><a href="https://www.wenjiangs.com/group/topic-6569481.html" title="MVC 使用 Linq to Entity 和 sql 加密">MVC 使用 Linq to Entity 和 sql 加密</a></li></ul></div></div></div><div class="side-tags"><div class="wt-container"><div class="mod-tit"><a href="/tags" class="pull-right">更多 <i class="wjsp wjsp-xiangyou"></i></a><h3>热门标签</h3></div><div class="mod-con"><a href="https://www.wenjiangs.com/tag/operating-system-xht">操作系统</a> <a href="https://www.wenjiangs.com/tag/programming-oci">程序设计</a> <a href="https://www.wenjiangs.com/tag/it-operation-and-maintenance">IT运维</a> <a href="https://www.wenjiangs.com/tag/linux%e7%b3%bb%e7%bb%9f%e7%ae%a1%e7%90%86">Linux系统管理</a> <a href="https://www.wenjiangs.com/tag/javascript">JavaScript</a> <a href="https://www.wenjiangs.com/tag/%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%ba%94%e7%94%a8">服务器应用</a> <a href="https://www.wenjiangs.com/tag/solaris">solaris</a> <a href="https://www.wenjiangs.com/tag/c-c">C/C++</a> <a href="https://www.wenjiangs.com/tag/php">PHP</a> <a href="https://www.wenjiangs.com/tag/shell">Shell</a> <a href="https://www.wenjiangs.com/tag/bsd">BSD</a> <a href="https://www.wenjiangs.com/tag/vue-js">Vue.js</a> <a href="https://www.wenjiangs.com/tag/aix">aix</a> <a href="https://www.wenjiangs.com/tag/oracle">Oracle</a> <a href="https://www.wenjiangs.com/tag/python">Python</a> <a href="https://www.wenjiangs.com/tag/html">HTML</a> <a href="https://www.wenjiangs.com/tag/%e7%b3%bb%e7%bb%9f%e7%ae%a1%e7%90%86">系统管理</a> <a href="https://www.wenjiangs.com/tag/html5">HTML5</a> <a href="https://www.wenjiangs.com/tag/css">CSS</a> <a href="https://www.wenjiangs.com/tag/%e5%89%8d%e7%ab%af">前端</a></div></div></div><div class="side-group site-recUser"><div class="wt-container"><div class="mod-tit"><a href="/people" class="pull-right">更多 <i class="wjsp wjsp-xiangyou"></i></a><h3>推荐作者</h3></div><div class="mod-con"><div class="row wt-group"><div class="col-md-12"><div class="pull-left wt-group-avatar"><a href="https://www.wenjiangs.com/author/vg3n8usp" rel="nofollow"><img src="https://www.wenjiangs.com/wp-content/uploads/avatar/188899112191828722.jpg" width="96" height="96"></a></div><a data-id="2564" data-type="user" href="javascript:" class="follow_btn pull-right">关注</a><div class="wt-group-text"><h3 class="wt-group-tit"><a href="https://www.wenjiangs.com/author/vg3n8usp" rel="nofollow">╰ゝ天使的微笑</a></h3><p><span class="wt-info-model">文章 0</span> <span class="wt-info-model">评论 0</span></p></div></div><div class="col-md-12"><div class="pull-left wt-group-avatar"><a href="https://www.wenjiangs.com/author/ejdkjyik" rel="nofollow"><img src="https://www.wenjiangs.com/wp-content/uploads/sysavatar/120820192499.jpg" width="96" height="96"></a></div><a data-id="1221" data-type="user" href="javascript:" class="follow_btn pull-right">关注</a><div class="wt-group-text"><h3 class="wt-group-tit"><a href="https://www.wenjiangs.com/author/ejdkjyik" rel="nofollow">少女净妖师</a></h3><p><span class="wt-info-model">文章 0</span> <span class="wt-info-model">评论 0</span></p></div></div><div class="col-md-12"><div class="pull-left wt-group-avatar"><a href="https://www.wenjiangs.com/author/qq_15zWqYRW" rel="nofollow"><img src="http://thirdqq.qlogo.cn/g?b=oidb&k=KTkQVf51NA6PXd5snM6NEg&s=640&t=1555304886" width="96" height="96"></a></div><a data-id="4766" data-type="user" href="javascript:" class="follow_btn pull-right">关注</a><div class="wt-group-text"><h3 class="wt-group-tit"><a href="https://www.wenjiangs.com/author/qq_15zWqYRW" rel="nofollow">朱洁</a></h3><p><span class="wt-info-model">文章 0</span> <span class="wt-info-model">评论 0</span></p></div></div><div class="col-md-12"><div class="pull-left wt-group-avatar"><a href="https://www.wenjiangs.com/author/qq_1o2hU6aF" rel="nofollow"><img src="http://thirdqq.qlogo.cn/ek_qqapp/AQPnqKmhDKWzffc0ia3TvG0CeJCu60ulZeCgHrwYn3RuDF12owDyicYTKAXgSLLCAGUGibxKrib1p7cWNZIgicvJGMWHredn28fCjZk58vL1wMVOiaSwAIV8Q/0" width="96" height="96"></a></div><a data-id="5702" data-type="user" href="javascript:" class="follow_btn pull-right">关注</a><div class="wt-group-text"><h3 class="wt-group-tit"><a href="https://www.wenjiangs.com/author/qq_1o2hU6aF" rel="nofollow">觉浅</a></h3><p><span class="wt-info-model">文章 0</span> <span class="wt-info-model">评论 0</span></p></div></div><div class="col-md-12"><div class="pull-left wt-group-avatar"><a href="https://www.wenjiangs.com/author/3s1etd3g" rel="nofollow"><img src="https://www.wenjiangs.com/wp-content/uploads/sysavatar/0516102848846600.jpg" width="96" height="96"></a></div><a data-id="1154" data-type="user" href="javascript:" class="follow_btn pull-right">关注</a><div class="wt-group-text"><h3 class="wt-group-tit"><a href="https://www.wenjiangs.com/author/3s1etd3g" rel="nofollow">滥情空心</a></h3><p><span class="wt-info-model">文章 0</span> <span class="wt-info-model">评论 0</span></p></div></div><div class="col-md-12"><div class="pull-left wt-group-avatar"><a href="https://www.wenjiangs.com/author/hl1314520" rel="nofollow"><img src="https://www.wenjiangs.com/wp-content/uploads/2021/11/Q2aTWPVyxUTDoT0J.png" width="96" height="96"></a></div><a data-id="1342" data-type="user" href="javascript:" class="follow_btn pull-right">关注</a><div class="wt-group-text"><h3 class="wt-group-tit"><a href="https://www.wenjiangs.com/author/hl1314520" rel="nofollow">hl1314520</a></h3><p><span class="wt-info-model">文章 0</span> <span class="wt-info-model">评论 0</span></p></div></div></div></div></div></div><div class="side-friendship"><div class="wt-container"><div class="mod-tit"><a href="/friendship" class="pull-right">更多 <i class="wjsp wjsp-xiangyou"></i></a><h3>友情链接</h3></div><div class="mod-con"><a href="http://www.wenjiangs.com" target="_blank">文江博客</a></div></div></div><div class="side-toc"><div class="wt-container"><div class="mod-con"><div class="singleToc"><ul></ul></div></div></div></div></div></div></div></div><footer class=""><ul class="flink"><li><a href="/donation">捐赠本站</a></li><li><a href="/friendship">友情链接</a></li><li><a href="/specification">使用规范</a></li><li><a href="/agreement">服务协议</a></li><li><a href="/about">关于我</a></li></ul><p>©文江博客 Wenjiangs.com 2017-2025 / <a href="http://beian.miit.gov.cn" target="blank">蜀ICP备13016540号-2</a></p></footer><div class="side-tool"><div><a href="https://www.wenjiangs.com/feedback"><i class="wjsp wjsp-fankuiyijianfankui-xianxing"></i></a> <a href="javascript:" class="backup"><i class="wjsp wjsp-xiangshang"></i></a> <a href="javascript:" class="toComment"><i class="wjsp wjsp-liaotian2"></i></a> <a href="javascript:" class="toBottom"><i class="wjsp wjsp-xiangxia"></i></a></div></div><div class="privacy"><div class="privacyLeft">我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 <a href="/agreement">隐私政策</a> 了解更多相关信息。 单击 <code>接受</code> 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。</div><div class="privacyBtn"><button class="btn btn-default">取消</button> <button class="btn btn-primary">接受</button></div></div><div class="originaltextBox"><div class="otbTitle"><span class="otbtText">原文</span> <span class="otbtClose" aria-hidden="true">×</span></div><div class="otbContent"><div class="wt-content"></div></div></div></body></html>