我有一个php的网站,包括()将内容嵌入到模板中.要加载的页面在get参数中给出,我将".php"添加到参数的末尾并包含该页面.我需要做一些安全检查以避免XSS或其他东西(不是mysql注入,因为我们没有数据库).我想出的是以下内容.
$page = $_GET['page'];
if(!strpos(strtolower($page), 'http') || !strpos($page, '/') ||
!strpos($page, '\\') || !strpos($page, '..')) {
//append ".php" to $page and include the page
Run Code Online (Sandbox Code Playgroud)
我还能做些什么来进一步消毒我的输入吗?
我试图将一个通用功能放在一起,以清理对Mysql数据库的输入.到目前为止,这就是我所拥有的:
function sanitize($input){
if(get_magic_quotes_qpc($input)){
$input = trim($input); // get rid of white space left and right
$input = htmlentities($input); // convert symbols to html entities
return $input;
} else {
$input = htmlentities($input); // convert symbols to html entities
$input = addslashes($input); // server doesn't add slashes, so we will add them to escape ',",\,NULL
$input = mysql_real_escape_string($input); // escapes \x00, \n, \r, \, ', " and \x1a
return $input;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我理解的定义get_magic_quotes_qpc().这是由php服务器设置为自动转义字符而不是需要使用addslashes().
我是否正确地使用过addslashes()并且 …
好吧,所以我在SO和其他地方一直在阅读关于降价的信息,用户输入和数据库之间的步骤通常给出为
但对我来说,做以下事情更有意义:
我错过了什么吗?在我看来,这几乎是xss证明
我有以下数组,并想知道验证和santizing这个数组的最佳方法是什么,以确保只允许整数?
if(is_array($_POST['taxonomy'])) {
$term_ids = array_map('esc_attr', $_POST['taxonomy']);
}
Run Code Online (Sandbox Code Playgroud)
打印时看起来像这样:
Array
(
[0] => 13
[1] => 12
)
Run Code Online (Sandbox Code Playgroud)
我知道esc_attr不是很安全所以想要更加强化一些东西.
任何帮助都会很棒.
干杯,
戴夫
我正在生成一些动态SQL,并希望确保我的代码是安全的SQL注入.
为了争论,这里是一个如何生成它的最小例子:
var sql = string.Format("INSERT INTO {0} ({1}) VALUES (@value)",
tableName, columnName);
Run Code Online (Sandbox Code Playgroud)
在上面,tableName和columnName,以及@value来自不受信任来源的任何内容.由于占位符的使用@value是安全的SQL注入攻击,可以忽略.(该命令通过SqlCommand执行.)
但是,tableName并且columnName 不能作为占位符绑定,因此容易受到注入攻击.由于这是一个"真正动态"的场景,因此没有白名单tableName或columnName可用.
问题是:
是否有一个标准的,内置的方式来检查和/或消毒tableName和columnName?(SqlConnection,或帮助程序类等)如果没有,在不使用第三方库的情况下执行此任务的好方法是什么?
笔记:
[schema].[My Table].column,就像"安全"一样table1.更新:
刚发现这个,并认为它有点有趣:.NET4中有一个SqlFunctions.QuoteName函数(EF4?).好的,这对我来说真的没有帮助......
我想接受用户输入(有时这将是大段落)并生成LaTeX文档.我正在考虑一些简单的正则表达式来替换\with的\textbackslash所有实例{或者}用\}或的所有实例\{.
我怀疑这是否足够.我还需要做什么?注意:如果有一个特殊的库,我正在使用python.
为了澄清,我不希望任何东西被解析为LaTeX语法:$a$应该替换为\$a\$.
我有一个页面,当在鼠标悬停在缩略图上时,它应该显示更大版本的图像.
我有一个带有ID的'div',JQuery代码如下:
$(document).ready(function(){
$('img').hover(function() {
var src = $("#im" + this.id).attr("src");
$('#viewlarge').css('backgroundImage','url(' + src +')');
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
我使用的图像是由Ruby脚本生成的,该脚本"生成"具有相似但不同id的图像.但是,有时会上传内部有"空格"的照片.我的开发人员工具告诉我背景图像设置不正确,但图像路径是正确的,浏览器在查找图像时没有问题.
我的问题是,我可以以某种方式消毒url'src',所以空格不会有问题吗?我知道这个服务器端,但我想知道如何使用JQuery/JS.
谢谢!
我想使用字符串来执行全局正则表达式,但它可能包含正则表达式字符.在使用它构建正则表达式之前,在字符串中转义所有正则表达式字符的最佳方法是什么?
基本上我可能有这样的事情;
var test = 'test.';
var regex = new RegExp(test, 'ig');
Run Code Online (Sandbox Code Playgroud)
我需要'测试'.成为'测试\'.所以它不会以意想不到的方式表现.
我正在使用OWASP Html Sanitizer来防止对我的网络应用程序进行XSS攻击.对于许多应该是纯文本的字段,Sanitizer的效果超出了我的预期.
例如:
HtmlPolicyBuilder htmlPolicyBuilder = new HtmlPolicyBuilder();
stripAllTagsPolicy = htmlPolicyBuilder.toFactory();
stripAllTagsPolicy.sanitize('a+b'); // return a+b
stripAllTagsPolicy.sanitize('foo@example.com'); // return foo@example.com
Run Code Online (Sandbox Code Playgroud)
当我有字段,如电子邮件地址有+它如foo+bar@gmail.com我结束了在数据库中的错误数据.所以有两个问题:
+ - @他们真的需要编码这些危险的角色吗?问题2对我来说是更重要的答案.
sanitization ×10
php ×3
.net ×2
javascript ×2
security ×2
xss ×2
arrays ×1
css ×1
dynamic-sql ×1
integer ×1
java ×1
jquery ×1
latex ×1
markdown ×1
mysql ×1
owasp ×1
python ×1
regex ×1
sql ×1
validation ×1