本文目录一览:
php网站怎样防御xss攻击?
过滤用户输入的script/script以及其他的HTML标签等。。
php下怎样防止XSS攻击
在PHP中修补XSS漏洞,我们可以使用三个PHP函数。
这些函数主要用于清除HTML标志,这样就没办法注入代码了。使用更多的函数是htmlspecialchars() ,它可以将所有的""与""符号转换成"" 与"gt;"。其它可供选择的函数还有htmlentities(), 它可以用相应的字符实体(entities)替换掉所有想要替换掉的特征码(characters)。
PHP Code:
?
// 这里的代码主要用于展示这两个函数之间输出的不同
$input = 'scriptalert(1);/script';
echo htmlspecialchars($input) . 'br /';
echo htmlentities($input);
?
htmlentities()的另一个例子
PHP Code:
?php
$str = "A 'quote' is bbold/b";
echo htmlentities($str);
echo htmlentities($str, ENT_QUOTES);
?
第一个显示: A 'quote' is bbold/b
第二个显示:A 'quote' is bbold/b
htmlspecialchars()使用实例
PHP Code:
?php
$new = htmlspecialchars("a href='test'Test/a", ENT_QUOTES);
echo $new;
?
显示: a href='test'Test/a
strip_tags()函数代替.删除所有的HTML元素(elements),除了需要特别允许的元素之外,如:i, b 或p.
strip_tags()使用实例
PHP Code:
?php
$text = 'pTest paragraph./p!-- Comment -- Other text';
echo strip_tags($text);
echo "\n";
// allow p
echo strip_tags($text, 'p');
?
现在我们至少已经知道有这些函数了,当我们发现我们的站点存在XSS漏洞时就可以使用这些代码了。我最近在我的站点上的GoogleBig(一个Mybb论坛的插件)视频部分发现了一个XSS漏洞,因此我就在想如何使用这些函数写段代码来修补这个搜索漏洞。
首先我发现问题出在search.php这一文件上,现在让我们看看这个查询及输出查询结果中的部分代码研究一下:
PHP Code:
function search($query, $page)
{
global $db, $bgcolor2, $bgcolor4, $sitename, $io_db, $module_url, $list_page_items, $hm_index;
$option = trim($option);
$query = trim($query);
$query = FixQuotes(nl2br(filter_text($query)));
$db-escape_string($query);
$db-escape_string($option);
alpha_search($query);
...
在这种情况下,我们通过使用$query这一值作为变量,然后使用htmlentities()这一函数:
PHP Code:
$query = FixQuotes(nl2br(filter_text(htmlentities($query))));
如果你对这三种函数还有有疑问可以使用PHP手册来查看:
详细讲解如何留后门
1.进入站点,查看目录权限,可不可以写入和跨目录 2.查看admin,data,inc,upload等目录内部信息,或者站少人访问的直接站点根目录留. 3.免杀小马一般会在upload上传目录或者图片目录上传,有时候直接就在主页index里面包含跳转上传隐藏代码,大马一般不在根目录,站长得到的地方出现,会利用另名来迷惑站长,比如css.asp,或者inc2.asp,ad1.asp这些放在特定文件夹里,而遇上懒的站长,就会把这个shell帮忙永久保存了,呵呵..用wenshell扫描器一般可以将大部分的webshell扫出来,除非经过特殊免杀代码转换,或者利用iis6.0的解析漏洞,比如123.asp;123.jpg,win2000系统会默认为图片格式,但是默认的win2003iis6不会,直接解析成脚本执行,会导致webshell的出现,在动态单页面里包含一句话提交又或者利用include包含大法执行,也是查不到后门的方法,大伙可以去挖挖.好了,简单讲到这我们从光明的站长说吧,站点没出现什么访问问题,不代表没问题,oday,代码漏洞,注入,xss,nc上传等分分钟都可以使站点遭人种webshell 1.前面提到基本的方法就是shell扫描器,还有就是利用文件对比和旧的备份资料做对比,如果没有备份也没关系,直接把最新的文件列出来,用dreamwear查看代码,一般大牛用它来挖洞的噢..呵呵. 2.页面注入安全要防注,用户帐号权限要限制,目录脚本执行也要限制,一般上传图片的就禁止执行,其他目录禁止写入,删掉ws组建和cmd,除非是自己维护站点的,否则管理后台全部改名,且进行网段ip限制,自己的固定ip才可以登录后台. 3.网站如果用过编辑器,比如ewebeditor,fck这些的,把无相关的删掉,编辑器登录后台地址删掉,编辑器后台管理员帐户密码复杂化,去除带有可上传asa,asp,asasp,phpaspx,这些后缀,数据库设置为只读. 4.对可疑html清除包含漏洞,上面说过,可以包含上传代码运行呢.就像这样:index?id=nhs8.com,就可以进入上传画面. 5.还是那句话,经常备份,升级网页程序,扫描,查看记录.
如何实现php的安全最大化?怎样避免sql注入漏洞和xss跨站脚本攻击漏洞
使用php安全模式
服务器要做好管理,账号权限是否合理。
假定所有用户的输入都是“恶意”的,防止XSS攻击,譬如:对用户的输入输出做好必要的过滤
防止CSRF,表单设置隐藏域,post一个随机字符串到后台,可以有效防止跨站请求伪造。
文件上传,检查是否做好效验,要注意上传文件存储目录权限。
防御SQL注入。
避免SQL注入漏洞
1.使用预编译语句
2.使用安全的存储过程
3.检查输入数据的数据类型
4.从数据库自身的角度考虑,应该使用最小权限原则,不可使用root或dbowner的身份连接数据库。若多个应用使用同一个数据库,也应该为数据库分配不同的账户。web应用使用的数据库账户,不应该有创建自定义函数,操作本地文件的权限。
避免XSS跨站脚本攻击
1.假定所有用户输入都是“邪恶”的
2.考虑周全的正则表达式
3.为cookie设置HttpOnly,防止cookie劫持
4.外部js不一定可靠
5.出去不必要的HTML注释
6. 针对非法的HTML代码包括单双引号等,使用htmlspecialchars()函数。