如果插入用户输入而不修改SQL查询,则应用程序容易受到SQL注入的攻击,如下例所示:
$unsafe_variable = $_POST['user_input'];
mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
Run Code Online (Sandbox Code Playgroud)
这是因为用户可以输入类似的内容value'); DROP TABLE table;--,查询变为:
INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
Run Code Online (Sandbox Code Playgroud)
可以采取哪些措施来防止这种情况发生?
鉴于以下内容:
<ul id="list">
<li>Item 1</li>
<li class="active">Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
如何选择除项目2之外的所有项目,例如:
$("ul#list li!active")
Run Code Online (Sandbox Code Playgroud) 我是一个研究SQL Server项目的MySQL人,试图获取一个datetime字段来显示当前时间.在MySQL中我会使用NOW(),但它不接受.
INSERT INTO timelog (datetime_filed) VALUES (NOW())
Run Code Online (Sandbox Code Playgroud) 那么这是我的问题我有三张桌子; 地区,国家,国家.国家可以在区域内,州可以在区域内.地区是食物链的顶端.
现在我添加一个包含两列的popular_areas表; region_id和popular_place_id.是否有可能使popular_place_id成为国家或州的外键.我可能不得不添加一个popular_place_type列来确定id是否描述了一个国家或州.
这是我的尝试:
$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');
$query->execute(array('value'));
while ($results = $query->fetch())
{
echo $results['column'];
}
Run Code Online (Sandbox Code Playgroud) 我知道,我知道我在问题中写的内容我不应该感到惊讶.但我的情况是继续在继承的POS系统上工作,我的前任显然不知道JOIN,所以当我查看其中一个加载60秒的内部页面时,我发现它很快,将这8个查询重写为一个查询JOINs情况.问题是,除了不了解JOIN之外,他似乎也对多个数据库感到惊讶并且惊讶,他们使用不同的排序规则.事实上,我们使用所有"正常"的拉丁字符,说英语的人会考虑整个字母表,这整个事情将在几个月内不再使用,所以我只需要一个bandaid.
简而言之,我需要某种方法来转换为单个排序规则,因此我可以比较两个数据库中的两个字段.
确切的错误是:
无法在等于操作中解决"SQL_Latin1_General_CP850_CI_AI"和"SQL_Latin1_General_CP1_CI_AS"之间的排序规则冲突.
所以我正在开发一个专注于地图的新网络应用程序.使用Google Maps API v3并对此非常满意,但注意到兴趣点(POI)会自动冒泡,其中包含更多详细信息以及指向Google商家信息页面的链接.我不想要这些.这是我的代码:
map = new google.maps.Map(document.getElementById("map"), {
center:new google.maps.LatLng(default_latitude,default_longitude),
zoom:11,
mapTypeId:google.maps.MapTypeId.ROADMAP,
mapTypeControl:false,
panControl:false
});
Run Code Online (Sandbox Code Playgroud)
我知道你可以完全删除POI.这是我的代码:
map = new google.maps.Map(document.getElementById("map"),{
center:new google.maps.LatLng(default_latitude,default_longitude),
zoom:11,
mapTypeId:google.maps.MapTypeId.ROADMAP,
mapTypeControl:false,
panControl:false,
styles:[{
featureType:"poi",
elementType:"labels",
stylers:[{
visibility:"off"
}]
}]
});
Run Code Online (Sandbox Code Playgroud)
这完全消除了一切,我仍然希望看到标签,因为我认为它们带来了价值,但只是认为泡沫太过分散注意力.
这里参考的是我要删除的气泡:

这里是完全删除POI的相同地图:

我正在慢慢地将我的所有功能LAMP websites从mysql_功能转移到PDO功能,我已经击中了我的第一个砖墙.我不知道如何使用参数循环结果.我很满意以下几点:
foreach ($database->query("SELECT * FROM widgets") as $results)
{
echo $results["widget_name"];
}
Run Code Online (Sandbox Code Playgroud)
但是如果我想做这样的事情:
foreach ($database->query("SELECT * FROM widgets WHERE something='something else'") as $results)
{
echo $results["widget_name"];
}
Run Code Online (Sandbox Code Playgroud)
显然,"别的东西"将是动态的.
嗨,我需要通过代码(又名VB)在MSAccess 2003中创建一个查询 - 我该如何实现这一目标?
因此,如果您想要链接到电话号码,您可以执行类似的操作
<a href="tel:18005555555">Click to Call</a>
Run Code Online (Sandbox Code Playgroud)
这在移动网站上常用,并且在桌面网站上也越来越受欢迎(主要得益于我认为的Skype).但是有些计算机/设备无法支持它.有没有办法告诉用户是否能够处理tel:links?
解决方案可以是服务器端或客户端,但我认为它需要是客户端.
mysql ×3
php ×3
pdo ×2
sql ×2
sql-server ×2
access-vba ×1
collation ×1
google-maps ×1
html ×1
javascript ×1
jquery ×1
ms-access ×1
security ×1
t-sql ×1
uri ×1
url-scheme ×1
vba ×1