1. JavaScript / Говнокод #6121

    +165

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    <script>
    
    var IllegalChars=new Array("select", "drop", ";", "--", "insert", "delete", "xp_", "update", "/", ":", "char(", "?", "`", "|", "declare", "convert", "cast(", "@@", "varchar", "2D2D", "4040", "00400040", "[", "]");
    var IllegalFound=new Array();
    var IllegalCharsCount=0;
    
    function ResetCharsCount()
    {
     IllegalCharsCount=0;
    }
    
    function wordFilter(form,fields)
    {
    	ResetCharsCount();
    	var CheckTextInput;
    	var fieldErrArr=new Array();
    	var fieldErrIndex=0;
    	for(var i=0; i<fields.length; i++)
    	{
    		CheckTextInput = document.forms[form].elements[fields[i]].value;
    		for(var j=0; j<IllegalChars.length; j++)
    		{
    			for(var k=0; k<(CheckTextInput.length); k++)
    			{
    				if(IllegalChars[j]==CheckTextInput.substring(k,(k+IllegalChars[j].length)).toLowerCase())
    				{
    					IllegalFound[IllegalCharsCount]=CheckTextInput.substring(k,(k+IllegalChars[j].length));
    					IllegalCharsCount++;
    					fieldErrArr[fieldErrIndex]=i;
    					fieldErrIndex++;
    				}
    			}
    		}
    	}
    	var alert_text="";
    	for(var k=1; k<=IllegalCharsCount; k++)
    	{
    		alert_text+="\n" + "(" + k + ")  " + IllegalFound[k-1];
    		eval('CheckTextInput=document.' + form + '.' + fields[fieldErrArr[0]] + '.select();');
    	}
    	if(IllegalCharsCount>0)
    	{
    		alert("The form cannot be submitted.\nThe following errors were found:\n_______________________________\n" + alert_text + "\n_______________________________\n");
    		return false;
    	}
    	else
    	{
    		return true;
    		document.forms[form].submit();
    	}
    }
    </script>
    
    ...
    
    <FORM NAME="FormHome" ACTION="search.asp" METHOD="post" onSubmit="return wordFilter('FormHome',['criteria']);">

    http://www.cadw.wales.gov.uk/

    Инъекция не пройдет.

    Запостил: pingw33n, 29 Марта 2011

    Комментарии (9) RSS

    • Это-ж, мать вашу, настоящее копро-ассорти
      - то, что выдается за защиту от sql иньекции
      - регистр тегов
      - код длиннее двух слов в onsubmit
      - ведра глобалов, ResetCharsCount
      - new Array (хотя это, конечно, вопрос вкуса)
      - eval'ы на ровном месте
      - return true; document.forms[form].submit();
      Ответить
      • и контрольный -- вся эта хрень на клиенте.
        [KO]т.е. проку от защиты, пусть бы какая она суперская ни была, не больше нуля[/KO]
        Ответить
        • NoScript is a lie!
          Ответить
        • А вдруг ? Как с контакта музло качать через адресную строку качать
          Ответить
          • не надо, таким тупизмом даже криво спаянный контакт не страдает... безопасность там, может, и не отличная, но неплохая, раз не наблюдаем скандалов о взломе анкет
            Ответить

    Добавить комментарий