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