我昨天发了一个问题,我打算回到今天,但是我写了一些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
}
Run Code Online (Sandbox Code Playgroud)
为什么不使用着名的HTML Purifier呢?
HTML Purifier是一个用PHP编写的符合标准的HTML过滤器库.HTML Purifier不仅会删除所有恶意代码(更好地称为XSS),并且具有经过全面审核,
安全且允许的白名单,还可以确保您的文档符合标准,只有通过全面了解W3C的规范才能实现.
厌倦了使用BBCode,因为当前的
HTML过滤器不完整或不安全?有一个
WYSIWYG编辑器,但从来没有能够使用它?为您正在构建的应用程序寻找高质量,符合标准的开源组件?HTML Purifier适合您!
在防御攻击方面,你所做的事情是完全没有必要和无用的.任何基于JavaScript的"保护"都将在几秒钟内被规避,合法用户将不会乐于无法使用该$标志.始终假设任何传入的数据都可能被篡改.
在服务器端输出数据时需要小心.用于htmlspecialchars()任何传入的文本数据.如果您有传入的HTML需要"清理",请使用Sarfraz建议的HTML净化器.
相关SO阅读:
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |