草庐IT

php - 如何确定用户是否试图进行 SQL 注入(inject)攻击

我熟悉使用mysql_real_escape_string()和PHPFILTER_SANITIZE函数来防止sql注入(inject)。但是,我很好奇如何在PHP脚本中确定用户输入是否可能是sql注入(inject)尝试?这对于跟踪潜在的恶意IP很有用。 最佳答案 如果mysql_real_escape_string的输出与输入不同,则输入包含不安全字符。您可以推断用户可能一直在尝试攻击,特别是如果所涉及的字段是您通常认为不安全字符数量较少(例如邮政编码)的字段。但这也可能是因为他们的名字恰好是Robert');删除表学生;--.

php - 如何将 NULL 值从 PHP 变量插入 MySQL,远离 SQL 注入(inject)?

我有一个歌曲上传表单,我不会在MySQL中直接输入NULL值,例如:mysql_query("INSERTINTOsongs(album_id)VALUES(NULL)".我将从PHP变量中插入NULL到MySQL,并且肯定不会受到SQL注入(inject)攻击。我的SQL表是:CREATETABLEIFNOTEXISTS`songs`(`song_id`int(4)NOTNULL,`song_name`varchar(64)NOTNULL,`artist_id`int(4)NOTNULL,`album_id`int(4)DEFAULTNULL,`genre_id`int(4)DEFA

python - 如果我使用 Flask 接收发布数据,将该数据放入 WTForms 表单并成功验证,它是否可以免受 SQL 注入(inject)攻击?

我正在为我的应用程序使用Flask、WTForms和OurSQLMySQL库。我从request.form变量接收发布数据。我将其放入WTForms表单对象中。我对该表单调用validate(),然后使用OurSQL将表单数据插入MySQL数据库。在不做任何额外处理的情况下,我可以免受SQL注入(inject)攻击吗?WTFormsvalidate方法是否转义?如果没有,我应该怎么做才能转义数据?我正在做的事情的一个例子是这样的:form=MyWTFFormsForm(request.form)ifform.validate():cursor.execute("INSERTINTOmy

mysql - 如何在此 PHP 和 MySQL 代码中演示 SQL 注入(inject)?

我想首先指出,这是对我自己的数据库的一次教育尝试,目的是更好地理解MySQL注入(inject)以保护我自己的代码。我需要找出几个示例,说明如何针对以下代码构建MySQL注入(inject)。这是一个基本的用户登录系统,我在其中接受用户名和密码而不进行任何转义$user=(!empty($_POST['user']))?$_POST['user']:'';$pass=(!empty($_POST['pass']))?$_POST['pass']:'';然后MySQL查询尝试在我的名为users的表中查找输入的用户名和密码,如下所示:$res=mysql_query("SELECT*fr

javascript - 如果没有将用户输入发送到数据库,是否存在注入(inject)风险?

我有一个包含几百行的小型MySQL数据库(全部为文本,无图像)。我正在使用iQuery请求所有行并在客户端进行所有过滤。iQuery代码如下:$(document).ready(function(){$.get("alldata.php",function(data){$('#result').text(data);});});在服务器端,“alldata.php”具有以下代码并将JSON中的数据传回iQuery:$sql="SELECTtitleFROMmydatabase";$result=mysqli_query($conn,$sql);$arr=array();while($r

php - 在 php 中,sql 注入(inject)可以通过 is_numeric 函数实现吗?

我可以安全地假设(如果我只是获取一个ID号码)is_numeric足以阻止sql注入(inject)攻击吗?或者是否有可以通过is_numeric的sql注入(inject)方法? 最佳答案 你最好只做:$id=isset($_GET['id'])?(int)$_GET['id']:0;这样你就可以避免is_numeric函数开销。不过,这两种方法都足以避免注入(inject)(只要在is_numeric返回FALSE时对数据执行某些操作)。如果所讨论的$_GET变量不存在,三元运算符还可以确保您不会收到E_NOTICE。

php - 使用 PHP 和 Zend Framework 防止 SQL 注入(inject) - 如何?

我正在尝试保护我页面上的登录表单免受SQL注入(inject)攻击。在服务器端,我使用了ZendFramework(Zend_Db,Zend_Db_Table_Abstract),但是它内置的防注入(inject)功能:quote,quoteInto、quoteIdentifier不能很好地工作(据我所知如何使用它们)。其他方法如mysql_real_escape_string、addslashes似乎根本不起作用...这就是我要为防御实现的内容:functionprevent_from_sql_injection($str){if(preg_match('/[\'"]/',$str)

php - SQL 注入(inject) - 这(oneliner)安全吗?

PHP:$SQL="SELECTgoodiesFROMstashWHEREsecret='".str_replace("'",'',$_POST['secret'])."'";邪恶的天才黑客能否将SQL注入(inject)我的SELECT-如何? 最佳答案 为什么不使用mysql_real_escape_string()或更好的准备语句?您的解决方案似乎很愚蠢。 关于php-SQL注入(inject)-这(oneliner)安全吗?,我们在StackOverflow上找到一个类似的问题:

php - urlencode() 是否足以阻止 2011 年的所有 SQL 注入(inject)攻击

我正在将一些简单的用户数据传递到mysql数据库中。PHP的urlencode()返回一个字符串,其中包含除-_之外的所有非字母数字字符。已替换为百分号(%)后跟两个十六进制数字。我不担心空格变成加号或其他格式问题。我也不担心XSS和其他HTML黑客攻击。我相信我应该免受'和)风格的攻击。问题:是否有其他类型的sql攻击可以与-或_或.?示例:mysql_query("UPDATEcarsSETcolor='".urlencode($c)."'WHEREgarage=29");提前谢谢你 最佳答案 urlencode()与SQL无关

php - sprintf() 如何防止 SQL 注入(inject)?

我听说sprintf()可以防止SQL注入(inject)。是真的吗?如果是,怎么办?为什么人们推荐这样写查询:$sql=sprintf('SELECT*FROMTABLEWHERECOL1=%sANDCOL2=%s',$col1,$col2); 最佳答案 sprintf不会保护你!它只替换%s你必须mysql_real_escape_string这样:$sql=sprintf('SELECT*FROMTABLEWHERECOL1="%s"ANDCOL2="%s"',mysql_real_escape_string($col1),m