我的表格可能被黑客入侵

时间:2010-04-19 11:22:20

标签: javascript php

我昨天发了一个问题,我打算回到今天,但是我写了一些JavaScript作为防止XSS的第一线。然而,当我在我的实时服务器上测试它时,我抓住了一些无效的输入,因为javascript捕获了php部分。我的表单使用post和php不在我的表单项中(我没有输入)。这可能是采取表格行动或其他什么?我受到了保护,任何想法

这是我的代码,它在提交按钮上触发。

    function validateForBadNess(){

var theShit = new Array("*","^", "$", "(",")","{", "}","[", "]","\\", "|", "'","/","?",",","=",">","gt","lt", "<","script","`","´","php");
var tagName = new Array();

tagName[0] = "input";
tagName[1] = "select";
tagName[2] = "textbox";
tagName[3] = "textarea";

for (ms=0;ms<tagName.length;ms++){

 // loop through  the elements of the form
 var formItems = document.getElementsByTagName(tagName[ms]);

  for (var xs=0;xs<formItems.length;xs++){

   var thisString = formItems[xs].value;

   // loop through bad array
   for (zs in theShit){

    //alert(thisString + " " + thisString.indexOf(theShit[zs]))
    if(thisString.indexOf(theShit[zs]) >= 0){

    alert("Sorry but the following character: " + theShit[zs] + " is not permitted. Please omit it from your input.\nIf this is part of your password please contact us to heave your password reset.")
    return false;

    }

     }



  // loop for formitems 
  }

 // tagName toop
 }
// original condition
}

4 个答案:

答案 0 :(得分:5)

为什么不使用着名的 HTML Purifier

  

HTML Purifier符合标准   用PHP编写的HTML过滤器库。   HTML Purifier不仅会删除所有内容   恶意代码(俗称为   XSS)经过全面审核,
  它安全但宽容的白名单   还将确保您的文件   符合标准,只有一些东西   可以全面实现   了解W3C的规格。
  厌倦了使用BBCode   当前的景观缺陷或   不安全的HTML过滤器?有一个   WYSIWYG编辑但从未能够   用它?寻找高品质,   符合标准,开源   该应用程序的组件   你在建造? HTML Purifier适用于   你!

答案 1 :(得分:5)

在防范攻击方面,你所做的事情是完全没有必要和无用的。任何基于JavaScript的“保护”都将在几秒钟内被规避,合法用户将不会乐于无法使用$标志。始终假设任何传入的数据 都已被篡改。

在服务器端输出数据时需要小心。对任何传入的文本数据使用htmlspecialchars()。如果您有传入的HTML需要“清理”,请使用Sarfraz建议的HTML净化器。

相关SO阅读:

答案 2 :(得分:2)

您必须在服务器上进行输入验证。攻击者可以发送请求,同时完全绕过浏览器和您的javascript。要安全地过滤输入,您必须在服务器端执行此操作。

这样做的好方法是使用php的filter extension

如果您只想再次显示输入,请使用htmlspecialchars()

答案 3 :(得分:0)