在网站中安全嵌入代码

时间:2015-09-26 05:20:40

标签: javascript php html css security

我正在制作一个网站,允许用户创建广告,应用程序等。想想它就像Adsense广告和Facebook应用程序的应用程序。

因此,我允许用户使用提供的工具或通过自己的HTML代码以他们想要的方式创建广告或应用,然后将其呈现为网站中的广告和应用,供其他用户查看。

我的问题:

1)当我允许用户添加自己的代码嵌入网站时,我是否将我的网站暴露给安全风险? (我不确定,但我认为他们将能够在javascript中添加一些恶意代码)

2)如果我考虑使用Iframe将嵌入代码与网站的其他部分隔离,那么这是一个问题还是有更好的方法来做到这一点?

我想要实现的目标:

在网站中呈现用户生成的自定义HTML,CSS代码而不影响安全性的某种元素。

1 个答案:

答案 0 :(得分:3)

根据允许的广告或应用类型以及可以使用的语言,您可能会在某些方面面临风险,尤其是在其他用户可以看到的情况下。

我们假设他们可以使用html并添加此代码

#include <iostream>
using namespace std;

int main()
{
char s[50];
int i;
int lowercase, uppercase, numChars, otherChars = 0;

cout << "Enter a continuous string of characters" << endl;
cout << "(example: aBc1234!@#$%)" << endl;
cout << "Enter your string: ";
cin >> s;
cout << endl;

i = 0; //missing
while (s[i] != 0) // while the character does not have ASCII code zero
{
if ((s[i] >= 'a' && s[i] <= 'z'))
    lowercase++;
    i++;
}
i = 0; // missing
while (s[i] != 0)
{
if ((s[i] >= 'A' && s[i] <= 'Z'))
    uppercase++;
    i++;
}
cout << lowercase + uppercase << " letters" << endl;
i = 0;
while (s[i] != 0)
{
if ((s[i] >= '0' && s[i] <= '9'))
    numChars++;
    i++;
}

cout << numChars << " numerical characters" << endl;

return 0;
}

在这种情况下,所有可以看到此内容的用户都会受到xss攻击。如果是这种情况,请参阅此帖子 - &gt; How can I allow my user to insert HTML code, without risks?

我不推荐使用服务器端语言,虽然iframe本身可能更安全,但同样适用,特别是如果您的域托管iframe。如果iframe src与iframe显示在同一个域中,您可以抛弃任何安全iframe可能假装提供的内容。

最好的解决方案是提供您自己的所见即所得编辑器,将您的特殊代码转换为HTML代码。允许JS是你想要以安全的方式考虑做的事情,这可以通过创建自己的包装器(甚至在包装器中包装一系列jquery函数)并巧妙地将它们包含在你的wysiwyg中来完成。