网站防止被写入php(如何防止网站被入侵)

  • 1、PHP面试题如何防止服务器资源被其他网站盗用,并写出相关代码?
  • 2、用php写的网站可以用什么工具来检查它是否被挂马被植入后门了???
  • 3、PHP里如何让自己网页的内容防止被复制的代码?
  • 4、自己写的php代码,怎样保证网站的安全性?
  • 5、如何防止代码注入攻击在PHP
  • 6、PHP网站怎么sql注入?有没有破解防御的方法?

得看是什么资源了

1,如果是媒体(图片,声音,视频),则是使用Rewrite的重定向,要实现这个东西很简单,貌似你问问度娘《图片防盗链》就有你看不完的答案了。

2,如果是重要的文件(如配置文件或其它的),那就一定要用 .htaccess文件了。

在 .htaccess文件中写入以下代码:

Order Deny,Allow

Deny from all

Allow from 127.0.0.1

只可让本机访问,其它全部拒绝,保存。放到你要设防的目录下。之后,你那目录就安全了

清马

1、找挂马的标签,比如有script language=”javascript” src=”网马地址”/script或iframe width=420 height=330 frameborder=0

scrolling=auto src=网马地址/iframe,或者是你用360或病杀毒软件拦截了网马网址。SQL数据库被挂马,一般是JS挂马。

2、找到了恶意代码后,接下来就是清马,如果是网页被挂马,可以用手动清,也可以用批量清,网页清马比较简单,这里就不详细讲,现在着重讲一下SQL数据库清马,用这一句语句“update 表名 set 字段名=replace(字段名,’aaa’,”)”, 解释一下这一句子的意思:把字段名里的内容包含aaa的替换成空,这样子就可以一个表一个表的批量删除网马。

在你的网站程序或数据库没有备份情况下,可以实行以上两步骤进行清马,如果你的网站程序有备份的话,直接覆盖原来的文件即可。

修补漏洞(修补网站漏洞也就是做一下网站安全。)

1、修改网站后台的用户名和密码及后台的默认路径。

2、更改数据库名,如果是ACCESS数据库,那文件的扩展名最好不要用mdb,改成ASP的,文件名也可以多几个特殊符号。

3、接着检查一下网站有没有注入漏洞或跨站漏洞,如果有的话就相当打上防注入或防跨站补丁。

4、检查一下网站的上传文件,常见了有欺骗上传漏洞,就对相应的代码进行过滤。

5、尽可能不要暴露网站的后台地址,以免被社会工程学猜解出管理用户和密码。

6、写入一些防挂马代码,让框架代码等挂马无效。

7、禁用FSO权限也是一种比较绝的方法。

8、修改网站部分文件夹的读写权限。

9、如果你是自己的服务器,那就不仅要对你的网站程序做一下安全了,而且要对你的服务器做一下安全也是很有必要了!

1、在不想被复制内容的php页面中添加引用script src=”../nocopy.js” type=”text/javascript”/script

2、同时在网站文件夹中放入nocopy.js文件,当前../nocopy.js表示nocopy.js文件在根文件夹中

3、nocopy.js中的文件内容是:

var omitformtags=[“input”, “textarea”, “select”]

omitformtags=omitformtags.join(“|”)

function disableselect(e){

if (omitformtags.indexOf(e.target.tagName.toLowerCase())==-1)

return false

}

function reEnable(){

return true

}

if (typeof document.onselectstart!=”undefined”)

document.onselectstart=new Function (“return false”)

else{

document.onmousedown=disableselect

document.onmouseup=reEnable

}

那你就需要尽量多考虑一点了

一个是参数,要防止sql注入,这个是必须的

一个是验证码,防止机器人刷爆你的服务器

如果自己写,不要写太复杂,这样漏洞相对比较少

我也是自己写的,不过不建议啊,比较麻烦,花时间

而且还没有开源的功能多

希望能帮助到你

一,HTML防注入。

一般的html注入都是在字符串中加入了html标签,用下JAVA代码可以去掉这部分代码。

代码如下,自己封装成方法即可。

String msge = “asdasdasdasd div id=\”f\”asdfsdf”;

System.out.println(msge);

msge = msge.replace(“”, “”);

msge = msge.replace(“”, “”);

msge = msge.replace(” “, ” “);

msge = msge.replace(“”, “”);

msge = msge.replace(“\””, “””);

msge = msge.replace(“‘”, “qpos;”);

System.out.println(msge);

二、防SQL注入

最简单最容易的是限制用户输入。

简单点的就是不允许用户输入单引号 和 –,因为单引号号–在SQL中都是影响执行的。

但SQL注入是多方面的,防止的方法也有很多种。

1、地址栏禁止特殊字符防SQL注入

把特殊字符(如and、or、’、”)都禁止提交就可以防止注入了。

2、php过滤html字符串,防止SQL注入

批量过滤post,get敏感数据

$_GET = stripslashes_array($_GET);

$_POST = stripslashes_array($_POST);

数据过滤函数

function stripslashes_array($array) {

while(list($key,$var) = each($array)) {

if ($key != ‘argc’ $key != ‘argv’ (strtoupper($key) != $key || ”.intval($key) == “$key”)) {

if (is_string($var)) {

$array[$key] = stripslashes($var);

}

if (is_array($var)) {

$array[$key] = stripslashes_array($var);

}

}

}

return $array;

}

3、替换HTML尾标签

function lib_replace_end_tag($str)

{

if (empty($str)) return false;

$str = htmlspecialchars($str);

$str = str_replace( ‘/’, “”, $str);

$str = str_replace(“\\”, “”, $str);

$str = str_replace(“”, “”, $str);

$str = str_replace(“”, “”, $str);

$str = str_replace(“SCRIPT”, “”, $str);

$str = str_replace(“/SCRIPT”, “”, $str);

$str = str_replace(“script”, “”, $str);

$str = str_replace(“/script”, “”, $str);

$str=str_replace(“select”,”select”,$str);

$str=str_replace(“join”,”join”,$str);

$str=str_replace(“union”,”union”,$str);

$str=str_replace(“where”,”where”,$str);

$str=str_replace(“insert”,”insert”,$str);

$str=str_replace(“delete”,”delete”,$str);

$str=str_replace(“update”,”update”,$str);

$str=str_replace(“like”,”like”,$str);

$str=str_replace(“drop”,”drop”,$str);

$str=str_replace(“create”,”create”,$str);

$str=str_replace(“modify”,”modify”,$str);

$str=str_replace(“rename”,”rename”,$str);

$str=str_replace(“alter”,”alter”,$str);

$str=str_replace(“cas”,”cast”,$str);

$str=str_replace(“”,””,$str);

$str=str_replace(“”,””,$str);

$str=str_replace(“”,””,$str);

$str=str_replace(” “,chr(32),$str);

$str=str_replace(” “,chr(9),$str);

$str=str_replace(” “,chr(9),$str);

$str=str_replace(“”,chr(34),$str);

$str=str_replace(“‘”,chr(39),$str);

$str=str_replace(“br /”,chr(13),$str);

$str=str_replace(“””,”‘”,$str);

$str=str_replace(“css”,”‘”,$str);

$str=str_replace(“CSS”,”‘”,$str);

return $str;

}

三、专业的事情交给专业的工具去做。

安装安全软件。例如,在服务器中安装“服务器安全狗”,可以设置防注入,防攻击的设置,只要设置好安全规则,就可以屏蔽大多数攻击入侵。

网站的运行安全肯定是每个站长必须考虑的问题,大家知道,大多数黑客攻击网站都是采用sql注入,这就是我们常说的为什么最原始的静态的网站反而是最安全的。 今天我们讲讲PHP注入的安全规范,防止自己的网站被sql注入。

如今主流的网站开发语言还是php,那我们就从php网站如何防止sql注入开始说起:

Php注入的安全防范通过上面的过程,我们可以了解到php注入的原理和手法,当然我们也同样可以制定出相应该的防范方法:

首先是对服务器的安全设置,这里主要是php+mysql的安全设置和linux主机的安全设置。对php+mysql注射的防范,首先将magic_quotes_gpc设置为On,display_errors设置为Off,如果id型,我们利用intval()将其转换成整数类型,如代码:

$id=intval($id);

mysql_query=”select *from example where articieid=’$id’”;或者这样写:mysql_query(”SELECT * FROM article WHERE articleid=”.intval($id).””)

如果是字符型就用addslashes()过滤一下,然后再过滤”%”和”_”如:

$search=addslashes($search);

$search=str_replace(“_”,”\_”,$search);

$search=str_replace(“%”,”\%”,$search);

当然也可以加php通用防注入代码:

/*************************

PHP通用防注入安全代码

说明:

判断传递的变量中是否含有非法字符

如$_POST、$_GET

功能:

防注入

**************************/

//要过滤的非法字符

$ArrFiltrate=array(”‘”,”;”,”union”);

//出错后要跳转的url,不填则默认前一页

$StrGoUrl=””;

//是否存在数组中的值

function FunStringExist($StrFiltrate,$ArrFiltrate){

foreach ($ArrFiltrate as $key=$value){

if (eregi($value,$StrFiltrate)){

return true;

}

}

return false;

}

//合并$_POST 和 $_GET

if(function_exists(array_merge)){

$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);

}else{

foreach($HTTP_POST_VARS as $key=$value){

$ArrPostAndGet[]=$value;

}

foreach($HTTP_GET_VARS as $key=$value){

$ArrPostAndGet[]=$value;

}

}

//验证开始

foreach($ArrPostAndGet as $key=$value){

if (FunStringExist($value,$ArrFiltrate)){

echo “alert(/”Neeao提示,非法字符/”);”;

if (empty($StrGoUrl)){

echo “history.go(-1);”;

}else{

echo “window.location=/””.$StrGoUrl.”/”;”;

}

exit;

}

}

?

/*************************

保存为checkpostandget.php

然后在每个php文件前加include(“checkpostandget.php“);即可

**************************/

另外将管理员用户名和密码都采取md5加密,这样就能有效地防止了php的注入。

还有服务器和mysql也要加强一些安全防范。

对于linux服务器的安全设置:

加密口令,使用“/usr/sbin/authconfig”工具打开密码的shadow功能,对password进行加密。

禁止访问重要文件,进入linux命令界面,在提示符下输入:

#chmod 600 /etc/inetd.conf //改变文件属性为600

#chattr +I /etc/inetd.conf //保证文件属主为root

#chattr –I /etc/inetd.conf // 对该文件的改变做限制

禁止任何用户通过su命令改变为root用户

在su配置文件即/etc/pam.d/目录下的开头添加下面两行:

Auth sufficient /lib/security/pam_rootok.so debug

Auth required /lib/security/pam_whell.so group=wheel

删除所有的特殊帐户

#userdel lp等等 删除用户

#groupdel lp等等 删除组

禁止不使用的suid/sgid程序

#find / -type f \(-perm -04000 – o –perm -02000 \) \-execls –lg {} \;

原创文章,作者:FCOXL,如若转载,请注明出处:https://www.506064.com/n/126583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
FCOXL的头像FCOXL
上一篇 2024-10-03 23:08
下一篇 2024-10-03 23:08

相关推荐

  • jsp判断密码代码,jsp确认密码

    本文目录一览: 1、急求jsp用户登陆口令密码验证代码! 2、jsp判断两次密码是否一致,怎么打? 3、怎么在jsp页面中判断用户名或密码是否正确 4、jsp页面如何验证账号密码不…

    编程 2024-10-11
  • filepath的详细阐述

    一、filepath must not be null filepath在程序中经常被用来指代文件路径,因此filepath必须确保不为空才能进行文件操作,为了保持程序的健壮性,我…

    编程 2024-11-29
  • 全面了解adbkill进程

    adbkill进程是Android系统中一个非常重要的进程,该进程的作用是用于管理设备上的进程以及进行进程间通信。本篇文章将从多个角度介绍adbkill进程,包括其功能、使用方法、…

    编程 2024-12-11
  • Hive函数hiveto_date详解

    一、hivedateadd函数 /* 示例代码: 对当前日期增加1个月 */ SELECT hivedateadd(‘month’,1,CURRENT_DATE()); /* 对d…

    编程 2024-10-26
  • Java实例变量简介

    一、实例变量定义 定义在类中,方法体之外的变量称为实例变量。实例变量在对象创建时被创建,每个对象都有自己的一份实例变量的拷贝,对象的操作必须通过对象的方法来完成,因此定义在类内部的…

    编程 2024-12-11
  • -2147467259的多方面阐述

    -2147467259是一个十六进制的数值,对于不熟悉计算机领域的人来说,很难理解它到底代表什么。事实上,这个数值在计算机世界中有着重要的意义,在多个方面都有广泛的应用。 一、Wi…

    编程 2024-10-04
  • 将java程序打jar包并运行,如何打jar包和运行jar包

    本文目录一览: 1、java应用程序怎样打包成可jar执行程序 2、如何将java程序打包成可执行的jar 3、如何把java程序打成JAR包并能自动运行 4、java项目怎么打成…

    编程 2024-12-02
  • 为Android List实现排序功能

    一、为什么需要排序功能 在实际的Android应用中,经常需要对数据进行排序,以满足用户的需求。例如在一个联系人列表中,用户可以按照姓名或者首字母进行排序;在一个音乐列表中,用户可…

    编程 2024-11-29
  • Python实现字典数据结构的快速查找和处理

    字典是Python中重要的数据结构之一,它可以快速地存储、查找和处理键值对。在字典中键必须是唯一的,而值可以重复。Python内置了字典类型,但是我们也可以通过自己实现来更好地了解…

    编程 2024-10-31

发表回复

登录后才能评论