Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当您允许用户在您的网站上编辑HTML和CSS时,您应该采取哪些预防措施?_Html_Css_Customization_Security - Fatal编程技术网

当您允许用户在您的网站上编辑HTML和CSS时,您应该采取哪些预防措施?

当您允许用户在您的网站上编辑HTML和CSS时,您应该采取哪些预防措施?,html,css,customization,security,Html,Css,Customization,Security,Tumblr确实令人印象深刻,因为它允许用户自定义他们的个人资料等等。您可以编辑个人资料的HTML和CSS 这是我想应用到我自己的网站。然而,我相信这将是一个很大的安全负担 有人对Tumblr这样的功能有什么建议或注意事项吗?另外,是否建议将可编辑的HTML和CSS存储在数据库中?谢谢:D 附言。 服务器端脚本呢?假设我想授予一个选项,允许用户编写一个对数据库做一些事情的按钮。关于如何做到这一点有什么想法吗?根据我的经验,如果您希望用户能够完全使用HTML/CSS,那么这是一件非常困难的事情。然

Tumblr确实令人印象深刻,因为它允许用户自定义他们的个人资料等等。您可以编辑个人资料的HTML和CSS

这是我想应用到我自己的网站。然而,我相信这将是一个很大的安全负担

有人对Tumblr这样的功能有什么建议或注意事项吗?另外,是否建议将可编辑的HTML和CSS存储在数据库中?谢谢:D

附言。
服务器端脚本呢?假设我想授予一个选项,允许用户编写一个对数据库做一些事情的按钮。关于如何做到这一点有什么想法吗?

根据我的经验,如果您希望用户能够完全使用HTML/CSS,那么这是一件非常困难的事情。然而,您可以做的是去掉所有CSS和HTML属性,只将“安全”代码放在白名单上

例子
这是法律法规

当然,您仍然应该清理href属性

这很糟糕,因为页面的其余部分将变得巨大, 所以要确保有一个结束标记 蓝先生{ 颜色:#00f;//保留此项(通过白名单) 奇怪的css规则:可能很危险;//过滤掉这个! }
不过,这些只是你可能遇到的一些陷阱

我不熟悉Tumblr,但我很确定他们正在做类似的事情

至于数据库问题,当然可以在数据库中存储HTML和CSS,许多系统都会这样做。在您的情况下,您只需要一个表示,其他任何东西都会让用户感到困惑(“为什么我的CSS规则没有应用;它就在代码中!”)

根据我的经验,如果您希望用户能够完全使用HTML/CSS,这是一件非常困难的事情。然而,您可以做的是去掉所有CSS和HTML属性,只将“安全”代码放在白名单上

例子
这是法律法规

当然,您仍然应该清理href属性

这很糟糕,因为页面的其余部分将变得巨大, 所以要确保有一个结束标记 蓝先生{ 颜色:#00f;//保留此项(通过白名单) 奇怪的css规则:可能很危险;//过滤掉这个! }
不过,这些只是你可能遇到的一些陷阱

我不熟悉Tumblr,但我很确定他们正在做类似的事情


至于数据库问题,当然可以在数据库中存储HTML和CSS,许多系统都会这样做。在您的情况下,您只需要一个表示,其他任何东西都会让用户感到困惑(“为什么不应用我的CSS规则;它就在代码中!”)

如果您使用的是
php
,那么对于数据库问题,您可以使用mini-API系统。例如,您希望用户允许对某个内容发表评论并将其保存在数据库中,然后您可以像这样使用API

首先,
api.php
文件,(URL位置:
http://yoursite.com/api.php


如果您使用的是
php
,那么对于数据库问题,您可以使用mini-API系统。例如,您希望用户允许对某个内容发表评论并将其保存在数据库中,然后您可以像这样使用API

首先,
api.php
文件,(URL位置:
http://yoursite.com/api.php


服务器端脚本怎么样?假设我想授予一个选项,允许用户编写一个对数据库做一些事情的按钮。关于如何做到这一点有什么想法吗?这在很大程度上取决于您的用例,所以您可能应该问另一个问题。在任何情况下,我都不允许用户只插入定制的PHP/Ruby/what have you code。滥用的可能性太大了。服务器端脚本呢?假设我想授予一个选项,允许用户编写一个对数据库做一些事情的按钮。关于如何做到这一点有什么想法吗?这在很大程度上取决于您的用例,所以您可能应该问另一个问题。在任何情况下,我都不允许用户只插入定制的PHP/Ruby/what have you code。滥用的可能性太大了。
<p>This is legal code.</p>

<p><a onload="alert('XSS!')">The attribute should be filtered out</a></p>

<p><a href="http://google.com/" class="blue">This is a legal link.</a>
Of course you should still sanitize the href attribute!</p>

<h1>This is bad, because the rest of the page is going to huge,
so make sure there's a closing tag

<style>
.blue {
    color: #00f; // keep this (by whitelist)
    strange-css-rule: possibly-dangerous; // Filter this out!
}
</style>
<?php

// ID and Key can be different for all users.
// id = 1234
// key = 'secret_key'

// function = name of the function, user can call
// option = parameter passed to the function

// Now check if id, key, function and option are requested and then
// call function if it exists.

if(isset($_GET['id'], $_GET['key'], $_GET['function'], $_GET['option']) {
   $id = $_GET['id'];
   $key = $_GET['key'];

   if($id == '1234' && $key == 'secret_key') {

       // define all functions here
       function make_comment($option) {
           ...code for saving comment to database...
       }

       if(function_exists($_GET['function'])) {
           $_GET['function']($_GET['option']);
       }
   }
}

?>