我正在使用 ASP.NET 构建一个网站,我想为其用户提供测试其 html5/css/javascript 代码的机会。
为了达到这个目标,我实现了一个类似于 W3School 的 Try It Yourself 编辑器。
此编辑器通过 POST 将 HTML 代码从当前页面的文本区域提交到 TryIt.aspx 页面,该页面可视为文本区域旁边的 iframe。
TryIt.aspx 背后的代码如下
protected void Page_Load(object sender, EventArgs e)
{
RunScriptCode();
}
private void RunScriptCode()
{
string resultValue;
try
{
HttpContext c = HttpContext.Current;
NameValueCollection f = c.Request.Form;
resultValue = f["textareacodeinput"];
Response.Headers.Add("X-XSS-Protection", "0");
if (resultValue != null)
{
Response.Write(resultValue);
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
因此,resultValue
检索从当前页面发布的输入文本区域内的 HTML 代码;然后此代码在 TryIt.aspx trhough 上编写为 HTML Response.Write(resultValue)
。
我添加了标题Response.Headers.Add("X-XSS-Protection", "0");
以禁用 Chrome 上的跨站点脚本过滤器。
现在,因为这个简单的 Try It Yourself 代码编辑器中不涉及任何 db,所以我考虑不实施任何针对 XSS 的安全性
无论如何,我想知道我的想法是否正确或我的构建方式是否容易受到一些 XSS 攻击,这些攻击可以利用我的网站或发布我的网站的 ASP.NET 服务器。
谁能帮我一些建议?
非常感谢。