当前位置:  开发笔记 > 编程语言 > 正文

让用户为其图像提供链接是否安全?

如何解决《让用户为其图像提供链接是否安全?》经验,为你挑选了1个好方法。

我正在玩我的小PHP项目,我很惊讶我应该如何处理图像处理.据我所知,它是您在服务器中托管图像或让用户提供链接.鉴于我的应用程序是在共享主机站点上,哪一个更好?有什么风险?



1> RobertPitt..:

用户提供

您需要确保链接有效

您需要检查链接的内容以确认其图像

您需要能够在每次加载时检查图像

您必须构建您的html以检查图像是否仍然可用.

您还必须确认图像的位置是受信任的位置

如果图像不在HTTPS服务器上,那么您可能会导致浏览器出现问题.

自托管形象

您可以确保图像格式正确.

您需要注意GIF漏洞利用等漏洞

您可以使用PHP动态操作图像

您可以检查和验证图像的大小并存储在文件系统或DB上

需要更多带宽

如果图像是动态的,那么它们会导致高CPU

我建议你去自托管图像,或者在另一个数据中心托管图像,例如带有开放API的图像主机.

如果您担心带宽,那么您可以创建一个图像上传系统,在上传时它使用图像主机API将图像发送到外部源,然后将图像ID与post/user/entity一起存储在数据库中.

Stack Overflow使用ImgUr作为图像,SO已经考虑过你的想法并选择在外部存储但在本地上传,ImgUR返回可以存储的数据,例如:


    
        imgur
        
        <caption/>
        <hash>UrTHG</hash>
        <deletehash>bzEkpCdHPL22Hlp</deletehash>
        <datetime>2010-08-14 03:39:23</datetime>
        <type>image/gif</type>
        <animated>false</animated>
        <width>314</width>
        <height>115</height>
        <size>4413</size>
        <views>0</views>
        <bandwidth>0</bandwidth>
    </image>
    <links>
        <original>http://imgur.com/UrTHG.gif</original>
        <imgur_page>http://imgur.com/UrTHG</imgur_page>
        <delete_page>http://imgur.com/delete/bzEkpCdHPL22Hlp</delete_page>
        <small_square>http://imgur.com/UrTHGs.jpg</small_square>
        <large_thumbnail>http://imgur.com/UrTHGl.jpg</large_thumbnail>
    </links>
</images>
</pre>

<p>这很好,因为像small_square,large_thumbnail等缩略图是预先生成的元数据,如大小,宽度,高度,视图等.</p>

<p>如果您担心CPU使用率和服务器负载,那么您应该回到上面关于外部数据存储的部分.</p>

<p>如果您担心CPU,那么您可以通过GD库操作图像,然后将缓存版本存储在文件系统上,如果需要我可以在一段时间内更新.</p>

<p>另一个指向用户链接图像的向下指针是,当图像是它时,它可以是动态图像和登录用户数据,例如suer正在访问的页面,如果主要原因是当你在Facebook上并且你嵌入了一个实体时作为博客文章,图像被下载并存储在Facebook的CDN上,因此外部资源无法说明IP的内容和位置.</p>

<p>这应该有助于你做出决定.</p>

<hr>

<p>由于已经有一些关于XSS风险的讨论,我想我会稍微澄清一点.</p>

<p>如果您选择允许用户为您提供图像链接,则必须验证图像而不是内容,因此必须完成此操作的原因是因为我们说用户输入了以下图像位置.</p>

<pre class="brush:bash;">   javascript:alert('XSS');
</pre>

<p>如果您没有使用类似函数<code>htmlentities()</code>和<code>HTML Purifier</code>库的PHP进行清理,则在将上述字符串存储在数据库中之后,当用户尝试访问该页面时,它将呈现如下:</p>

<pre class="brush:bash;"><IMG SRC="   javascript:alert('XSS');">
</pre>

<p>因此每次页面呈现时都会显示一个对话框<code>XSS</code>,称为XSS Atack,atack随后会添加另一个图像"url"/"code",将某些数据(例如SESSION ID)发送到另一个自动转到的网站您的网站并根据该ID收集数据.</p>

<p>如果攻击者输入了以下网址,<code>http://attacker.com/evil.js</code>则呈现的内容将如此:</p>

<pre class="brush:bash;"><IMG SRC="http://attacker.com/evil.js">
</pre>

<p>由于这是一个图像标记,<code>evil.js</code>因此不会被处理为javascript,因为这不是文档对象模型的构建方式,这对用户来说是安全的.</p>

<p>关于漏洞的链接 </p>

<p>
<p>CSRF</p>
<p>XSS示例</p>
<p>XSS Wiki</p>
<p>Windows图元文件漏洞</p>
<p>跨区脚本</p>
<p></p>
        <hr>@Brian:有不止一种可能出错的事情.互联网上有一些我不想看到的照片,他们不会出售尺寸足够大的脑漂白剂.     </div>

    <div class="article_ab" style="width: 720px;height: 100px;margin: 0 auto;margin-top: 15px;">

    </div>

    <div class="article_recommend">
        <div class="list_top">推荐阅读</div>
        <div class="ListItems">
            <ul class="NewsList">
                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/HTML-_ShenGao_10_298a0559.html" target="_blank" title="HTML,身高100%不起作用">HTML,身高100%不起作用</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsImg">
                            <a href="https://devbox.cn/p/HTML-_ShenGao_10_298a0559.html" target="_blank" title="HTML,身高100%不起作用"><img src="https://img.devbox.cn/3cccf/16086/243/63d1fb966cd748b8.png" width="120" height="70" alt="HTML,身高100%不起作用"/></a>
                        </div>
                                                <div class="NewsDesc" style="width:500px;margin-left:15px;">
                        如何解决《HTML,身高100%不起作用》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/HTML-_ShenGao_10_298a0559.html" target="_blank" title="HTML,身高100%不起作用">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/RuHeZaiHuoQu_--__37ff1f6e.html" target="_blank" title="如何在获取"无法解决放置符号"错误时向Hashmap添加键和值">如何在获取"无法解决放置符号"错误时向Hashmap添加键和值</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsImg">
                            <a href="https://devbox.cn/p/RuHeZaiHuoQu_--__37ff1f6e.html" target="_blank" title="如何在获取"无法解决放置符号"错误时向Hashmap添加键和值"><img src="https://img.devbox.cn/3cccf/16086/243/5e25fe10f29a56d2.png" width="120" height="70" alt="如何在获取"无法解决放置符号"错误时向Hashmap添加键和值"/></a>
                        </div>
                                                <div class="NewsDesc" style="width:500px;margin-left:15px;">
                        如何解决《如何在获取"无法解决放置符号"错误时向Hashmap添加键和值》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/RuHeZaiHuoQu_--__37ff1f6e.html" target="_blank" title="如何在获取"无法解决放置符号"错误时向Hashmap添加键和值">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/tvos-UITextView__6617bf31.html" target="_blank" title="tvos:UITextView焦点外观像电影App">tvos:UITextView焦点外观像电影App</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsImg">
                            <a href="https://devbox.cn/p/tvos-UITextView__6617bf31.html" target="_blank" title="tvos:UITextView焦点外观像电影App"><img src="https://img.devbox.cn/3cccf/16086/243/d7c059f5a3503b7b.png" width="120" height="70" alt="tvos:UITextView焦点外观像电影App"/></a>
                        </div>
                                                <div class="NewsDesc" style="width:500px;margin-left:15px;">
                        如何解决《tvos:UITextView焦点外观像电影App》经验,为你挑选了0个好方法。 ...
                        <a href="https://devbox.cn/p/tvos-UITextView__6617bf31.html" target="_blank" title="tvos:UITextView焦点外观像电影App">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/QML-_JiShi_drag__f392dc15.html" target="_blank" title="QML:即使drag属性处于活动状态,也不会调用onDragStarted / finish">QML:即使drag属性处于活动状态,也不会调用onDragStarted / finish</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《QML:即使drag属性处于活动状态,也不会调用onDragStarted/finish》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/QML-_JiShi_drag__f392dc15.html" target="_blank" title="QML:即使drag属性处于活动状态,也不会调用onDragStarted / finish">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/ShiYong_enable_i_dfc428cd.html" target="_blank" title="使用enable_if进行C++模板重载:使用g ++和clang进行不同的行为">使用enable_if进行C++模板重载:使用g ++和clang进行不同的行为</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《使用enable_if进行C++模板重载:使用g++和clang进行不同的行为》经验,为你挑选了0个好方法。 ...
                        <a href="https://devbox.cn/p/ShiYong_enable_i_dfc428cd.html" target="_blank" title="使用enable_if进行C++模板重载:使用g ++和clang进行不同的行为">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/C--atoi_FanHuiCu_7b31bc71.html" target="_blank" title="C++ atoi返回错误的值">C++ atoi返回错误的值</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《C++atoi返回错误的值》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/C--atoi_FanHuiCu_7b31bc71.html" target="_blank" title="C++ atoi返回错误的值">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/WuFaJiangShuJuTu_1cd4ca4a.html" target="_blank" title="无法将数据推送到Firebase onclick">无法将数据推送到Firebase onclick</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《无法将数据推送到Firebaseonclick》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/WuFaJiangShuJuTu_1cd4ca4a.html" target="_blank" title="无法将数据推送到Firebase onclick">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/RuHeZai_Symfony2_9ae725c2.html" target="_blank" title="如何在Symfony2中使用Beip与Liip\FunctionalTestBundle?">如何在Symfony2中使用Beip与Liip\FunctionalTestBundle?</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《如何在Symfony2中使用Beip与Liip\FunctionalTestBundle?》经验,为你挑选了0个好方法。 ...
                        <a href="https://devbox.cn/p/RuHeZai_Symfony2_9ae725c2.html" target="_blank" title="如何在Symfony2中使用Beip与Liip\FunctionalTestBundle?">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/Zai_transformCla_9ceb3ae9.html" target="_blank" title="在transformClassesWithDexForDebug上Gradle构建缓慢">在transformClassesWithDexForDebug上Gradle构建缓慢</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《在transformClassesWithDexForDebug上Gradle构建缓慢》经验,为你挑选了4个好方法。 ...
                        <a href="https://devbox.cn/p/Zai_transformCla_9ceb3ae9.html" target="_blank" title="在transformClassesWithDexForDebug上Gradle构建缓慢">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/Java_DaiLi_-_WuF_337eb1b4.html" target="_blank" title="Java代理 - 无法正确地从HTTP GET/POST请求交换数据">Java代理 - 无法正确地从HTTP GET/POST请求交换数据</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《Java代理-无法正确地从HTTPGET/POST请求交换数据》经验,为你挑选了0个好方法。 ...
                        <a href="https://devbox.cn/p/Java_DaiLi_-_WuF_337eb1b4.html" target="_blank" title="Java代理 - 无法正确地从HTTP GET/POST请求交换数据">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/RuHeZai_Django1-_9edc2e85.html" target="_blank" title="如何在Django 1.9中传递callable">如何在Django 1.9中传递callable</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《如何在Django1.9中传递callable》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/RuHeZai_Django1-_9edc2e85.html" target="_blank" title="如何在Django 1.9中传递callable">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/GuGeDiLiBianMa_a_8276592f.html" target="_blank" title="谷歌地理编码api不如使用地址的谷歌地图准确">谷歌地理编码api不如使用地址的谷歌地图准确</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《谷歌地理编码api不如使用地址的谷歌地图准确》经验,为你挑选了0个好方法。 ...
                        <a href="https://devbox.cn/p/GuGeDiLiBianMa_a_8276592f.html" target="_blank" title="谷歌地理编码api不如使用地址的谷歌地图准确">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/YiShuZuXingShiFa_60ec5a6d.html" target="_blank" title="以数组形式访问返回的值">以数组形式访问返回的值</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《以数组形式访问返回的值》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/YiShuZuXingShiFa_60ec5a6d.html" target="_blank" title="以数组形式访问返回的值">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/WeiShiMe_AppDele_08c33e83.html" target="_blank" title="为什么AppDelegate.swift窗口是可选的?">为什么AppDelegate.swift窗口是可选的?</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsImg">
                            <a href="https://devbox.cn/p/WeiShiMe_AppDele_08c33e83.html" target="_blank" title="为什么AppDelegate.swift窗口是可选的?"><img src="https://img.devbox.cn/3cccf/16086/243/3acb21bfbb644443.png" width="120" height="70" alt="为什么AppDelegate.swift窗口是可选的?"/></a>
                        </div>
                                                <div class="NewsDesc" style="width:500px;margin-left:15px;">
                        如何解决《为什么AppDelegate.swift窗口是可选的?》经验,为你挑选了2个好方法。 ...
                        <a href="https://devbox.cn/p/WeiShiMe_AppDele_08c33e83.html" target="_blank" title="为什么AppDelegate.swift窗口是可选的?">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/Webpack_CuoWu_-__05e843d3.html" target="_blank" title="Webpack错误 - 无法解析文件或目录">Webpack错误 - 无法解析文件或目录</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《Webpack错误-无法解析文件或目录》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/Webpack_CuoWu_-__05e843d3.html" target="_blank" title="Webpack错误 - 无法解析文件或目录">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/ZhiDingDe_LocalD_636d6a92.html" target="_blank" title="指定的LocalDB实例不存在">指定的LocalDB实例不存在</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《指定的LocalDB实例不存在》经验,为你挑选了0个好方法。 ...
                        <a href="https://devbox.cn/p/ZhiDingDe_LocalD_636d6a92.html" target="_blank" title="指定的LocalDB实例不存在">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/Q_OBJECT_He_moc__65f634dc.html" target="_blank" title="Q_OBJECT和moc进行继承">Q_OBJECT和moc进行继承</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《Q_OBJECT和moc进行继承》经验,为你挑选了0个好方法。 ...
                        <a href="https://devbox.cn/p/Q_OBJECT_He_moc__65f634dc.html" target="_blank" title="Q_OBJECT和moc进行继承">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/RuHeZaiMuLuZhong_c996d9c5.html" target="_blank" title="如何在目录中的所有文件中搜索字符串?我出现了内存异常">如何在目录中的所有文件中搜索字符串?我出现了内存异常</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《如何在目录中的所有文件中搜索字符串?我出现了内存异常》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/RuHeZaiMuLuZhong_c996d9c5.html" target="_blank" title="如何在目录中的所有文件中搜索字符串?我出现了内存异常">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/Zai_Swift_ZhongT_e17ad54d.html" target="_blank" title="在Swift中讨论,将来会有新的声明语法吗?">在Swift中讨论,将来会有新的声明语法吗?</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《在Swift中讨论,将来会有新的声明语法吗?》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/Zai_Swift_ZhongT_e17ad54d.html" target="_blank" title="在Swift中讨论,将来会有新的声明语法吗?">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                                <li>
                    <div class="NewTitle">
                        <a class="cat" href="/tag/程序员" title="程序员" target="_blank">程序员<i></i></a>
                        <h2><a href="https://devbox.cn/p/WuFaCong_iframe__7507648f.html" target="_blank" title="无法从iframe中找到FileHiddenName">无法从iframe中找到FileHiddenName</a></h2>
                    </div>

                    <div class="NewsInfo">
                                                <div class="NewsDesc" >
                        如何解决《无法从iframe中找到FileHiddenName》经验,为你挑选了1个好方法。 ...
                        <a href="https://devbox.cn/p/WuFaCong_iframe__7507648f.html" target="_blank" title="无法从iframe中找到FileHiddenName">[详细]</a>
                    </div>
                    <div style="clear:both"></div>

                </li>


                

            </ul>
        </div>
    </div>

    <div class="article_cmnt" style="display: none;">
        <div class="cmnt_title">吐了个 "CAO" !</div>
        <form action="" method="post">
            <div class="cmnt_text">
                <textarea class="ping-txt" onfocus="ck_txt(this);" onblur="ck_txt2(this);" id="ping-txt" name="ping-txt" >吐个槽吧,看都看了</textarea>
            </div>
            <div class="cmnt_cmt">
                <div class="cmnt_login_box">
                                        <a href="https://www.php1.cn/?s=user/login/index&from=">会员登录</a> | <a href="http://www.php1.cn/?s=user/reg/index">用户注册</a>
                                    </div>
                <div class="post_cmnt"><input type="button" value="吐  槽" onclick="post_ping();" /></div>
            </div>
        </form>

        
    </div>
</div>

<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushBash.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushCpp.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushCSharp.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushCss.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushDelphi.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushDiff.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushGroovy.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushJava.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushJScript.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushPhp.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushPlain.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushPython.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushRuby.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushScala.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushSql.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushVb.js"></script>
<script type="text/javascript" src="/style/SyntaxHighlighter/scripts/shBrushXml.js"></script>
<link type="text/css" rel="stylesheet" href="/style/SyntaxHighlighter/styles/shCore.css"/>
<link type="text/css" rel="stylesheet" href="/style/SyntaxHighlighter/styles/shThemeLiuQing.css"/>
<style>
    .syntaxhighlighter{
        width: 740px;
        padding-top:40px;padding-bottom:20px;
        border: 1px solid #333;
        background: url("/style/SyntaxHighlighter/top_bg.svg");
        background-size: 43px;
        background-repeat: no-repeat;
        margin-bottom: -7px;
        border-radius: 15px;
        background-position: 16px 12px;
        padding-left: 10px;
    }
    .gutter{
        display: none;
    }
</style>
<script type="text/javascript">
    SyntaxHighlighter.all();
</script>    <div class="article_right">

    <div class="profile">
        <div class="author">
            <!-- 未登录 -->
            <div class="author-avatar">
                <a href="/u/shoujiyonghu_2402851335">
                    <img src="https://img.devbox.cn/3cdc5/64c2/cd5/f53c066002fa970f.png" class="lazy-img" data-url="" alt="devbox">
                </a>
            </div>

            <div class="author-name">
                手机用户2402851335            </div>

            <div class="author-intro">
                这个屌丝很懒,什么也没留下!            </div>
            
            <div class="author-bt">

                                <a href="javascript:;" id="follow_bt" onclick="follow();" class="skins-btn" title="关注作者">
                    <svg class="icon" style="width: 15px;height: 15px;margin-top:-3px;margin-right:5px;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1428"><path d="M1024 409.6H614.4V0H409.6v409.6H0v204.8h409.6v409.6h204.8V614.4h409.6z" fill="#ffffff" p-id="1429"></path></svg>
                    关注作者</a>
                            </div>

        </div>
    </div>


    <div class="tools">
        <div class="tools_top">Tags | 热门标签</div>
        <div class="tools_box">
            <ul>
                                <li>
                    <a href="/tag/actionscrip" target="_blank" title="actionscrip">actionscrip</a>
                </li>
                                <li>
                    <a href="/tag/bash" target="_blank" title="bash">bash</a>
                </li>
                                <li>
                    <a href="/tag/c#" target="_blank" title="c#">c#</a>
                </li>
                                <li>
                    <a href="/tag/c++" target="_blank" title="c++">c++</a>
                </li>
                                <li>
                    <a href="/tag/c语言" target="_blank" title="c语言">c语言</a>
                </li>
                                <li>
                    <a href="/tag/erlang" target="_blank" title="erlang">erlang</a>
                </li>
                                <li>
                    <a href="/tag/flutter" target="_blank" title="flutter">flutter</a>
                </li>
                                <li>
                    <a href="/tag/go" target="_blank" title="go">go</a>
                </li>
                                <li>
                    <a href="/tag/golang" target="_blank" title="golang">golang</a>
                </li>
                                <li>
                    <a href="/tag/java" target="_blank" title="java">java</a>
                </li>
                                <li>
                    <a href="/tag/javascript" target="_blank" title="javascript">javascript</a>
                </li>
                                <li>
                    <a href="/tag/lua" target="_blank" title="lua">lua</a>
                </li>
                                <li>
                    <a href="/tag/node.js" target="_blank" title="node.js">node.js</a>
                </li>
                                <li>
                    <a href="/tag/perl" target="_blank" title="perl">perl</a>
                </li>
                                <li>
                    <a href="/tag/php" target="_blank" title="php">php</a>
                </li>
                                <li>
                    <a href="/tag/python" target="_blank" title="python">python</a>
                </li>
                                <li>
                    <a href="/tag/scala" target="_blank" title="scala">scala</a>
                </li>
                                <li>
                    <a href="/tag/typescript" target="_blank" title="typescript">typescript</a>
                </li>
                                <div style="clear: both"></div>
            </ul>
        </div>
    </div>


    <div class="rank">
        <div class="rank_top">RankList | 热门文章</div>
        <div class="rank_box">
            <ul>
                                <li>
                    <b >1</b><a href="https://devbox.cn/p/RuHeGengGaiDuiXi_fbc43c01.html" title="如何更改对象的显示方式?" target="_blank">如何更改对象的显示方式?</a>
                </li>
                                <li>
                    <b >2</b><a href="https://devbox.cn/p/KongZhiQiDe_ngdo_96044b24.html" title="控制器的ngdoc文档" target="_blank">控制器的ngdoc文档</a>
                </li>
                                <li>
                    <b >3</b><a href="https://devbox.cn/p/RuHePeiZhi_sprin_cdacdd18.html" title="如何配置spring boot应用程序以使用aspectj事务?" target="_blank">如何配置spring boot应用程序以使用aspectj事务?</a>
                </li>
                                <li>
                    <b >4</b><a href="https://devbox.cn/p/Zai_pycharm_Huo__1a0f6644.html" title="在pycharm或eclipse + pydev中的C线程中不工作python断点" target="_blank">在pycharm或eclipse + pydev中的C线程中不工作python断点</a>
                </li>
                                <li>
                    <b >5</b><a href="https://devbox.cn/p/KeNengDeYiWaiCan_773a1849.html" title="可能的意外参考比较按预期工作" target="_blank">可能的意外参考比较按预期工作</a>
                </li>
                                <li>
                    <b class="black">6</b><a href="https://devbox.cn/p/EFIShell_ZhongMe_1efc6e59.html" title="EFI Shell中没有FS0" target="_blank">EFI Shell中没有FS0</a>
                </li>
                                <li>
                    <b class="black">7</b><a href="https://devbox.cn/p/CongYaMaXun_-eBa_f26e8873.html" title="从亚马逊,eBay等网站中提取.ico图标" target="_blank">从亚马逊,eBay等网站中提取.ico图标</a>
                </li>
                                <li>
                    <b class="black">8</b><a href="https://devbox.cn/p/DanXingDouJing_-_082b0ad9.html" title="弹性豆茎,awsebcli和祝福1.9.5" target="_blank">弹性豆茎,awsebcli和祝福1.9.5</a>
                </li>
                                <li>
                    <b class="black">9</b><a href="https://devbox.cn/p/JiSuanDuiXiangSh_4b093b34.html" title="计算对象数组中的项目" target="_blank">计算对象数组中的项目</a>
                </li>
                                <li>
                    <b class="black">10</b><a href="https://devbox.cn/p/Wei_php5-6_JiHuo_4bb3884c.html" title="为php 5.6激活WinCache和OpCache以提高性能?" target="_blank">为php 5.6激活WinCache和OpCache以提高性能?</a>
                </li>
                                <li>
                    <b class="black">11</b><a href="https://devbox.cn/p/Fastbootflashsys_8a500c03.html" title="Fastboot flash system.img错误" target="_blank">Fastboot flash system.img错误</a>
                </li>
                                <li>
                    <b class="black">12</b><a href="https://devbox.cn/p/Unity-_RuHeJiang_678fa764.html" title="Unity:如何将VR Cardboard游戏嵌入到网站中" target="_blank">Unity:如何将VR Cardboard游戏嵌入到网站中</a>
                </li>
                                <li>
                    <b class="black">13</b><a href="https://devbox.cn/p/Androidwebview_J_707007d0.html" title="Android webview加载网址不适用于Instagram网页" target="_blank">Android webview加载网址不适用于Instagram网页</a>
                </li>
                                <li>
                    <b class="black">14</b><a href="https://devbox.cn/p/RuGuoYiZai_Jquer_7507fd15.html" title="如果已在Jquery中过滤,请保持过滤" target="_blank">如果已在Jquery中过滤,请保持过滤</a>
                </li>
                                <li>
                    <b class="black">15</b><a href="https://devbox.cn/p/SpringMVC-Method_f727edab.html" title="SpringMVC  -  Method可以返回Redirect(String)或ModelAndView" target="_blank">SpringMVC  -  Method可以返回Redirect(String)或ModelAndView</a>
                </li>
                                <li>
                    <b class="black">16</b><a href="https://devbox.cn/p/WoKeYiJiangTongY_2e1d317b.html" title="我可以将通用参数约束为*not*是可选的吗?" target="_blank">我可以将通用参数约束为*not*是可选的吗?</a>
                </li>
                                <li>
                    <b class="black">17</b><a href="https://devbox.cn/p/std--string_LeiC_35100322.html" title="std :: string类成员应该是指针吗?" target="_blank">std :: string类成员应该是指针吗?</a>
                </li>
                                <li>
                    <b class="black">18</b><a href="https://devbox.cn/p/JiangZhiZhenCunC_73bac8da.html" title="将指针存储到Eigen Vector'segment'而不复制?" target="_blank">将指针存储到Eigen Vector'segment'而不复制?</a>
                </li>
                                <li>
                    <b class="black">19</b><a href="https://devbox.cn/p/RuHeZai_Redux_Zh_dc6e2089.html" title="如何在Redux中将全局状态数据处理为深层嵌套组件?" target="_blank">如何在Redux中将全局状态数据处理为深层嵌套组件?</a>
                </li>
                                <li>
                    <b class="black">20</b><a href="https://devbox.cn/p/NeiBu_MSBuild_Cu_a7c347fe.html" title="内部MSBuild错误:已经注册了构建时间" target="_blank">内部MSBuild错误:已经注册了构建时间</a>
                </li>
                            </ul>
        </div>
    </div>


</div>    <div style="clear: both;"></div>
</div>

<script type="application/javascript">

    function follow(uid) {

        var myDate = new Date();
        $.get("/user/follow/post?uid="+uid+"&stime="+myDate.getMilliseconds(),null,function(response){
            if(response=="1"){
                tips('关注成功!')
                $("#follow_bt").html('<svg class="icon" style="width: 15px;height: 15px;margin-top:-3px;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1912"><path d="M984.554971 729.818319L757.2752 1001.934666c-23.431608 29.784785-63.349596 27.462118-91.084969 0l-148.309102-117.727323a34.156864 34.156864 0 0 1 34.156863-59.159688L711.732715 956.392181l224.524451-274.871667a34.156864 34.156864 0 1 1 48.297805 48.297805zM506.791534 592.052303c-6.284863 6.968-12.569726 0-22.771243 0-171.103115 0-386.928951 164.066802-386.928951 358.396584 0 18.740733-15.347817 33.951922-34.316262 33.951922a34.156864 34.156864 0 0 1-34.361805-33.951922c0-160.582801 134.122618-342.616113 323.283329-400.181814C261.271998 499.783228 210.765382 406.011252 210.765382 296.026151 210.765382 133.530566 342.428706 0 506.791534 0s296.026151 133.530566 296.026151 296.026151c0 161.630279-132.892971 294.614334-296.026151 296.026152z m0-523.738576c-126.243768 0-227.712424 102.903244-227.712424 227.712424s101.468656 227.712424 227.712424 227.712424 227.712424-102.903244 227.712424-227.712424S633.035302 68.313727 506.791534 68.313727z" p-id="1913"></path></svg>\n'
                    +"已关注")
            }else if(response=="0"){
                tips('已取消关注!')
                $("#follow_bt").html('<svg class="icon" style="width: 15px;height: 15px;margin-top:-3px;margin-right:5px;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1428"><path d="M1024 409.6H614.4V0H409.6v409.6H0v204.8h409.6v409.6h204.8V614.4h409.6z" fill="#ffffff" p-id="1429"></path></svg>\n' +
                    "关注作者")
            }else if(response=="-2"){
                tips("请先登录!")
            }else{
                tips("关注失败!")
            }
        });
        
    }

    function like(sid) {

        var myDate = new Date();
        $.get("/blog/article/like?sid="+sid+"&stime="+myDate.getMilliseconds(),null,function(response){
            if(response!="-1"){
                $("#like_num").html(response+"赞")
            }else{
                tips("关注失败!")
            }
        });

    }

</script>


<div class="bottom-bar">
    DevBox开发工具箱 | 专业的在线开发工具网站    <a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802040832" style="color:#444;"><img src="https://img.json1.cn/3cd4a/21981/c5a/4df0b47476da9030.png"/>京公网安备 11010802040832号</a>  |  <a href="https://beian.miit.gov.cn/" target="_blank" >京ICP备19059560号-6</a> <BR />
    Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved  devBox.cn 开发工具箱  版权所有 <BR />
</div></body>
</html>