我正在制作一个网站,允许用户创建广告,应用程序等。想想它就像Adsense广告和Facebook应用程序的应用程序。
因此,我允许用户使用提供的工具或通过自己的HTML代码以他们想要的方式创建广告或应用,然后将其呈现为网站中的广告和应用,供其他用户查看。
我的问题:
1)当我允许用户添加自己的代码嵌入网站时,我是否将我的网站暴露给安全风险? (我不确定,但我认为他们将能够在javascript中添加一些恶意代码)
2)如果我考虑使用Iframe将嵌入代码与网站的其他部分隔离,那么这是一个问题还是有更好的方法来做到这一点?
我想要实现的目标:
在网站中呈现用户生成的自定义HTML,CSS代码而不影响安全性的某种元素。
答案 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中来完成。